私はこの議論に関する他の多くの質問を読んだことがありますが、誰も私の問題を解決できませんでした。 私はこの方法でPHPページを呼び出します。200/'parsererror' jquery with ajax投稿者https
$.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と同じサーバーに置くとうまくいきます。トラブルはlocalhostから起動すると始まります。 その場合、xhrには次のように表示されます。 readyState=0, status=0, statusText="error"
同じ起源の制限のためにあると思われるトピックに関するいくつかの回答を読んで、私は呼び出しにいくつかのパラメータを追加しました。特に:
dataType:"jsonp",
crossDomain: true,
これは明らかにこれがうまく働いているため、私はreadyState=4, status=200, statusText="success"
を受け取りました。問題は、textStatus="parsererror"
です。 jsonpCallback
、cache
、async
、jsonp
など多くの構成で、運がないということも試しました。
ここでデータは返されません。この呼び出しで必要なCookieのみが提供されるためです。
私の質問は次のとおりです。どちらの場合も、このようなエラーの理由は何ですか?私が 'https'/POSTと呼ぶという事実は、単純なhttp/GETではなく、何か変わるのでしょうか?
2番目の質問は、後でsoapリクエストによっていくつかのwebservicesを呼び出す必要があります。これはxmlでデータを返します。この同じテクニックを使用することはできますか?(jQueryのドキュメントがうまくいれば、dataType:"jsonp xml"
を書いて飛行機に変換することができます(それも正しい手法であると仮定します))? jsonpがxmlよりむしろcallbackFN({...})
の行に何かを期待しているので、私はそれがないと思いますか?
これが間違っている場合は、正しい方法は何でしょうか?私はサーバーに触れることができないので、私はクライアント側に限られています。
どうしたらいいですか?プロキシを設定せずにXMLを取得する方法はありますか? – Stephan
私は、データ型: "jsonp xml"を使用することが可能でなければならないと言うことを認めています。しかし、ドキュメントも詳細を提供していません...他のstackoverflowトピックでもまだそれをカバーしていませんでした...興味深い – devnull69