下記のソースを作成し実行しています。
$.ajax({
type: 'get',
url: 'http://hogehoge/api/',
type: 'post',
dataType: 'jsonp',
jsonp : 'callback',
timeout : 1000,
data: {
'action': 'list'
},
success: function(data, dataType, arg3){
// 正常終了
alert(JSON.stringify(data));
},
error : function(XMLHttpRequest, textStatus, errorThrown){
alert("error");
}
});
サーバサイドは、phpにて作成して、type: 'get',で指定すると、正常に動作することを確認しています。
type: 'post' に変更すると、正常に動作しません。
又、サーバサイドは、html上で、formを使用して method="POST" で実行すると正常であることを確認しています。
ajax使用時の違いは、type: 'post'に指定した時に、http://hogehoge/api/?callback=jQuery11・・・・・・とURL側に、
callbackの名前が設定されてしまっていることになります。
この、?callback=jQuery11…もpostで送信させるようにさせることは出来ない物でしょうか?
ご存知の方いらっしゃいましたら、ご指導いただければ幸いです。
jsonpだとPOSTで通信はできなかったかと。
JSから別ドメインにPOST通信したいのであれば、別ドメインのサーバ側でAccess-Control-Allow-Originの設定をすれば可能だと思います。
http://modegramming.blogspot.jp/2011/02/access-control-allow-origin.html
実際は、別ドメインにアクセスすることはないのですが、callbackの関数名もPOSTで送る仕様のWebAPIなもので、jqueryの機能だけで、POSTでcallback=****を送ることができないかと、方法を探しています.
最終手段としては、jqueryでjsonp形式ではなく、text形式で応答を受けて、jsonpをパースして処理を実施する方法もあるとは考えていますが、なるべくであれば、ごろごり作る=>検証=>他の人への説明 等々の作業を省きたいもので、jqueryの設定だけで、callback=を POSTで送れないかと考えています。
また、jqueryの行っている callback=jQuery1…の動作は、便利なので、この動きまで、ゴリゴリ作りこんで=>検証 も時間がかかるので、出来れば避けて通りたいかと考えています。
ご指導よろしくお願い申し上げます。
$.ajax({ url: 'http://localhost:8080/test/', type: 'post', dataType: 'jsonp', jsonp : false, timeout : 1000, data: { 'action': 'list', 'callback':'callback' }, ...
このようなコードだとどうなりますか?
callback だけ URLに張り付きます。
GETでは問題なく動作します。
2014/01/08 15:32:37POST時には、動作しません。
http://hogehoge/api/?callback=callback とリクエストするURLは変わりますが、callback=callback がサーバのpostに入ってきません。
php側で、var_dump($_POST) を実行して、入ってきていないことを確認しています。
(応答された文字列の確認は、ajaxに、complete:function を作成し、クロームでブレークさせて、XMLHttpRequestのresponseTextの内容でvar_dumpの内容を確認しています。