この議論に関する他の多くの質問を読みましたが、私の問題を解決できるものはありませんでした。この方法でphpページを呼び出します。
$.ajax({
url: 'https://mydomain/page.php',
type: "POST",
data: {
"arg1": arg1,
"arg2": arg2
},
success: function(data, textStatus, xhr) {
//do stuff
},
error: function(xhr, textStatus) {
alert("doLogin\n- readyState: "+xhr.readyState+"\n- status: "+xhr.status);
}
});
さて、これをphpと同じサーバーに置くと、うまくいきます。ローカルホストから起動すると問題が発生します。その場合、xhr: で以下を受け取ります
readyState=0, status=0, statusText="error"
。トピックに関するいくつかの回答を読むと、同じオリジンの制限が原因であると思われるため、呼び出しにいくつかのパラメーターを追加しました。特に:
dataType:"jsonp",
crossDomain: true,
どうやらこれはうまくいくようreadyState=4, status=200, statusText="success"
です。問題は、textStatus="parsererror"
. また、運が悪い多くの構成で、、、、などjsonpCallback
の他のことも試しました。cache
async
jsonp
今、私はデータを受け取りません。なぜなら、この呼び出しは私が必要とする Cookie だけを私に与えるからです。
私の質問は次のとおりです。まず、私は物事を正しく行っていますか? どちらの場合も、そのようなエラーの理由は何ですか? 単純な http/GET ではなく、「https」/POST を呼び出したという事実は何かを変更しますか?
2 番目の質問は、後で SOAP リクエストを介していくつかの Web サービスを呼び出す必要があるということです。これにより、データが xml で返されます。この同じ手法を使用してもうまくいきますか (jQuery ドキュメントに問題dataType:"jsonp xml"
がなく、その場で変換するように記述できると仮定します (また、それが適切な手法であると仮定します))? jsonp はcallbackFN({...})
xml ではなく行に何かを期待しているので、そうではないと思いますよね?
これがどれも正しくない場合、続行する正しい方法は何ですか? サーバーに触れることができないため、クライアント側に限定されます。