私のページでは、FFとIEで次のjqueryコードを実行していますが、chromeがおかしくなっているようです。
fFでIE呼び出しが行われ、結果がChromeのdivに追加されます。失敗するとajaxfailedが呼び出されます。
ajaxFailed関数に渡されるXMLHttpRequestのステータスコードは「200」で、statusTextは「ok」です。 readystateは4で、responseTextは、divに追加したいデータに設定されています。基本的には、失敗メソッドの呼び出しを確認できますが、失敗していません。それは常にクロームで壊れます。
function getBranchDetails(contactID, branchID) {
$.ajax({
type: "GET",
url: urlToRequestTo,
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: branchDetailsSuccess,
error: AjaxFailed
});
}
function branchDetailsSuccess(result) {
$("#divBranchControl").empty();
$("#divBranchControl").append(" " + result);
$("#branchDiv").tabs();
}
function AjaxFailed(result) {
alert("FAILED : " + result.status + ' ' + result.statusText);
}
私はこの質問が多くの意見を得て、まだ開かれているのを見ました。私はそれを完全に忘れてしまいました。うまくいけば、これで私はそれを閉じることができます。
Datatype引数をなしに設定するか、datatype引数を完全に削除すると、問題が解決します。
私の例では、レンダリングされたビュー(文字列内のHTMLスニペット)を返し、このコードでは、実際にはそうでない場合でも、データ型をjsonに指定しています。他のほとんどのブラウザーは、データ型が正しくない場合はデータ型を無視し、処理を続行するため、htmlの結果を追加できます。
Chromeがエラーをスローします。実際のajaxリクエストは問題なく通過したため、ステータステキストはOK、ステータスコードは200です。問題はリクエスト自体とは何の関係もありません。問題は、返されたデータが私がchromeに伝えたものではないということです。
したがって、chromeは壊れます。 datatype引数を完全に削除すると、chromeは、データを取得したときのデータを把握します。 datatype引数を "html"に設定すると、正常に機能します。
要するに、問題はクロムではありません。それは私です。私はそのように馬鹿だからです。元の質問で提示した例に答えるので、これをこの質問への回答としてマークします。
コメントで、他の人は、この解決策が役に立たない可能性が高い他の状況を説明しました。
AJAXオペレーションに追加するだけ:async: false
後datatype: "json"
、そしてそれはあなたの問題を解決するはずです。 Chromeは、非同期呼び出しの処理に問題があります。
この問題が引き続き発生するかどうかはわかりませんが、今日同様のエラーが発生しました。私は、aspxページを呼び出して、responseTextとChrome=は何も返さなかったという文字列を返しました。他の場所では機能していたが、おそらくいくつかは送信しなかったという、aspxページにResponse.Closeがあったことがわかりました。 Chromeおよび/またはSafariに必要なヘッダーまたは何か。それが誰かを助けることを願っています。
1日半後には乗り越えたので、プレゼントしてもいいかな・・・.
function getBranchDetails(contactID, branchID) {
$.ajax({
type: "GET",
url: urlToRequestTo,
data: "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: branchDetailsSuccess,
error: branchAjaxFailed
});
}
function branchDetailsSuccess(result) {
$("#divBranchControl").empty();
$("#divBranchControl").append(" " + result);
$("#branchDiv").tabs();
}
function branchAjaxFailed(result) {
if (result.status == 200 && result.statusText == "OK") {
//this is here only because chrome breaks on this method only for no reason whatsoever.
//chrome sees the request as failed, but everything happens fine...
branchDetailsSuccess(result.responseText);
}
else {
alert("FAILED : " + result.status + ' ' + result.statusText);
}
}
Chrome(Firefoxでは問題ありませんでした)でこれに遭遇し、async: true
をajaxパラメータに追加することで解決しました。
Dataパラメータを ""に設定してみてください。
GET
リクエストの場合、データパラメータがURLに追加されます。なぜChromeに問題があるのかわかりませんが、一見の価値があります:)
成功するためにこれを試してください:
success: function(response) { branchDetailsSuccess(response); },