jqueyにて、post時にjsonpで指定したcallbackはpostされないのでしょうか?

下記のソースを作成し実行しています。
$.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で送信させるようにさせることは出来ない物でしょうか?
ご存知の方いらっしゃいましたら、ご指導いただければ幸いです。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/01/15 12:30:07
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:spacewarp No.1

回答回数1ベストアンサー獲得回数0

ポイント34pt

http://log.miraoto.com/2012/11/694/
こちらの記事に書かれている感じでいけそうですが

id:kameoyaji_2

GETでは問題なく動作します。
POST時には、動作しません。
http://hogehoge/api/?callback=callback とリクエストするURLは変わりますが、callback=callback がサーバのpostに入ってきません。

php側で、var_dump($_POST) を実行して、入ってきていないことを確認しています。
(応答された文字列の確認は、ajaxに、complete:function を作成し、クロームでブレークさせて、XMLHttpRequestのresponseTextの内容でvar_dumpの内容を確認しています。

2014/01/08 15:32:37
id:techmedia-think No.2

回答回数46ベストアンサー獲得回数13

ポイント33pt

jsonpだとPOSTで通信はできなかったかと。
JSから別ドメインにPOST通信したいのであれば、別ドメインのサーバ側でAccess-Control-Allow-Originの設定をすれば可能だと思います。
http://modegramming.blogspot.jp/2011/02/access-control-allow-origin.html

id:kameoyaji_2

実際は、別ドメインにアクセスすることはないのですが、callbackの関数名もPOSTで送る仕様のWebAPIなもので、jqueryの機能だけで、POSTでcallback=****を送ることができないかと、方法を探しています.

最終手段としては、jqueryでjsonp形式ではなく、text形式で応答を受けて、jsonpをパースして処理を実施する方法もあるとは考えていますが、なるべくであれば、ごろごり作る=>検証=>他の人への説明 等々の作業を省きたいもので、jqueryの設定だけで、callback=を POSTで送れないかと考えています。
また、jqueryの行っている callback=jQuery1…の動作は、便利なので、この動きまで、ゴリゴリ作りこんで=>検証 も時間がかかるので、出来れば避けて通りたいかと考えています。
ご指導よろしくお願い申し上げます。

2014/01/08 17:08:26
id:Lhankor_Mhy No.3

回答回数814ベストアンサー獲得回数232

ポイント33pt
$.ajax({
  url: 'http://localhost:8080/test/',
  type: 'post',
  dataType: 'jsonp',
  jsonp : false,
  timeout : 1000,
  data: {
    'action': 'list',
    'callback':'callback'
  },
  
  ...

 このようなコードだとどうなりますか?

id:kameoyaji_2

callback だけ URLに張り付きます。

2014/01/22 19:00:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません