1

IEでajaxリクエストをサポートするために、jQuery.XDomainRequest.js(https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest)を使用しています。

GETリクエストには最適ですが、POSTが機能せず、500が返されます(他のブラウザでも機能するため、XDR固有の問題です)。

私のajax呼び出しは次のようになります:

var contact = {};
contact.firstName = "ABC"; 

jQuery.ajax({
     type:  'POST',
     url:   contactDetailsUrl,
     data:  contact,
     dataType: 'json',
     success: function(data) {
                callback(true);
              },
     error: function(data) {
                alert('Currently having trouble posting.');
                callback(false);
            }
});

これはXDomainRequestとの最初の出会いであり、私は自分でいくつかの調査を行いましたが、なぜこれが失敗するのかわかりません。

よろしくお願いします!!!

編集:私はいくつかのデバッグを行いました。

私のテストURL="http:/myserver/test/index.php?key=123"(これはクロスドメインリクエストを作成します)

json_encode($ _ GET)を出力すると、次のようになります:{"key": "123"} json_encodee($ _ POST)を出力すると、次のようになります:[]。

明らかに私の投稿データは送信されていません。

これは私のデータを送信する行です:

xdr.send(postData);

postDataは次のようになります。

"firstName=ABC"

phpコードの私のヘッダーは次のようになります:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type');
4

2 に答える 2

1

これはあなたのために働くはずですphp

echo file_get_contents('php://input');

として使用するには$_POST

$_POST=json_decode(file_get_contents('php://input'), true);
于 2013-09-13T07:55:23.267 に答える
1

わかりました、私のphpの知識は私のXDRの知識よりも悪いです。

以下のリンクが役に立ちました

http://social.msdn.microsoft.com/Forums/eu/iewebdevelopment/thread/fe1570a0-8670-450d-90e6-1e03bd338569

$_POST の代わりに $HTTP_RAW_POST_DATA を使用する必要があります。

この質問に出くわした私のような人が他にいる場合に備えて、質問はそのままにしておきます。

于 2012-10-17T14:10:28.507 に答える