を打つAJAX呼び出しが、私は私のJSPページ(jQueryの1.7.2)で、このjQueryのコードを持っています。このコードが実行される前にIE9が正しくのみofter F12
function Header() {
this.add = function (parentDiv, leftToolbar, rightToolbar) {
hbHeader = Handlebars.compile($("#hb-header").html());
$(parentDiv).html(hbHeader({user:{tenantDescription:"", firstName:"", lastName:""},
leftTB:null, rightTB:null }));
$.ajax({
url:"${pageContext.request.contextPath}/services/login/sessionUser",
type:"POST",
async:true,
success:function (result) {
app.user = result;
var ltHtml;
var rtHtml;
if (leftToolbar) {
ltHtml = new Handlebars.SafeString(leftToolbar);
}
if (rightToolbar) {
rtHtml = new Handlebars.SafeString(rightToolbar);
}
$(parentDiv).html(hbHeader({user:app.user,
leftTB:{
html:ltHtml,
hidden:leftToolbar == null
},
rightTB:{
html:rtHtml,
hidden:rightToolbar == null
}
}))
},
error:function(jqXHR, textStatus, errorThrown) {
alert("error in ajax");
}
});
}
}
、ajaxSend
とajaxError
リスナーが登録されています。これと同じように:
$("#log-window").ajaxSend(function (event, jqXhr, ajaxOptions) {
console.log("handling an ajax request adding username and password to the header");
jqXhr.setRequestHeader('username', $.cookie('username'));
jqXhr.setRequestHeader('password', $.cookie('password'));
});
$("#log-window").ajaxError(function (errorThrown, xhr, failedReq, textStatus) {
alert("error in "+failedReq.url);
if (textStatus == 'timeout') {
if (!failedReq.tryCount) {
failedReq.tryCount = 1;
failedReq.retryLimit = 3;
}
if (failedReq.tryCount++ <= failedReq.retryLimit) {
//try again
$.ajax(failedReq);
return;
}
throw 'Es wurde ' + failedReq.retryLimit + ' Mal versucht. Die Verbindung scheint nicht zu funktionieren.';
return;
}
if (xhr.status == 500) {
if ($.cookie('pageRefreshed') == null) {
$.cookie('pageRefreshed', 'true', { expires:10000 });
location.reload();
}
throw 'Der Server hatte ein Problem. Bitte melden Sie den Fehler and den Systemadministrator';
} else if (xhr.status == 401) {
if (failedReq.url != "${pageContext.request.contextPath}/services/login") {
var loginData = {
username:$.cookie('username'),
password:$.cookie('password')
};
loginAttempt(failedReq, loginData);
}
} else {
throw 'Oops! There was a problem, sorry.';
}
});
ページ全体は、あなたが好きなら、あなたもログインすることができhttp://alpha.sertal.ch:8181/VisionWeb/data-details/#data:12300923
の下にアクセスすることができます。 user:alsoft03 password:password
ajax呼び出しが初めて行われたときに何が起きるかは、ユーザーがログインしていないため401エラーです。これがIEの失敗です。 ajaxSend
リスナーが呼び出されますが、ajaxError
は呼び出されません。 $ .ajax自体にエラーコールバックを設定しても、それは呼び出されません。
実際のブラウザ(FF、Chrome、Opera)でページを開くと、正常に動作し、パスワードを尋ねます。 IEはあなたがF12を押していないと、サイトが期待どおりに動作しません。
本当に奇妙です。コンソールを開いた状態でページをロードすると、そのページは機能します。コンソールを閉じると、空のヘッダーのみが表示されます。ページがロードされたら、コンソールを閉じるとロードが続けられます。
これをさまざまなマシンでテストしたところ、同じ結果が得られました。
私は狂っている。 F12でデバッガを開くとうまく動作するため、デバッグできません。
私はalert("I got so far")
行をさまざまな位置に置くため、ajaxコールバックは作成されていないことを知っています。
誰かがヒントを持っている場合は、大歓迎です。
解決を取得するために偽のそれはコンソールが開いていなくても実行されます。なぜなら、コンソールがロードされていないからです。定期的な閲覧のために1つを読み込むのはなぜですか?ほとんどの人は開発者ではありません。 – TheZ
私はそれを決して考えなかったでしょう!どのようにそれらの愚かな、本当に。私はそれについて論争するかもしれないと思うが、私はこのたわごとで一日失った。 1つのことは確かですが、私はそれを忘れないでしょう:-) –
うれしい私は助けることができました! = D – eivers88