我遇到了IE(11)的奇怪問題。我有簡單的jQuery代碼:當IE調試器打開時,jQuery ajax只能在IE中工作
$("#my-radio").click(function() {
$.ajax({
url: "/my-url",
}).error(function(jqXHR, textStatus, errorThrown) {
$("#error-summary").text(errorThrown);
});
});
的事情是,這個代碼完全在IE之外的所有瀏覽器(對我來說,除了IE 11,在早期版本中沒有的考驗)但是,當我打開IE瀏覽器建立在JavaScript調試器,看看有什麼不對 - 一切開始工作就好了。 IE使ajax調用控制器動作,控制器中的斷點被擊中。 Action沒有任何返回(它是void
),只是計算一些東西。我已經嘗試了this thread中提供的插件解決方案,但沒有用。
更新:
爲了證明我發表簡單的MVC應用程序here問題。當你點擊圖片,瀏覽器,使Ajax請求這個動作:
public string Hello()
{
string ip = Request.ServerVariables["REMOTE_ADDR"];
string agent = Request.UserAgent;
var request = new Request
{
IP = ip,
Time = DateTime.UtcNow,
UserAgent = agent
};
_requestsRepository.Add(request);
int byIp = _requestsRepository.GetTotalRequestsCountByUser(ip);
int total = _requestsRepository.TotalRequests;
string message = string.Format("Hello, {0}. This is your {1}th request and {2}th request in total.", ip, byIp, total);
return message;
}
這個jQuery代碼:
$(document).ready(function() {
$("#click-me").click(function() {
$.ajax({
url: "/services/hello",
})
.success(function (data) {
alert(data);
})
.error(function (jqXHR, textStatus, errorThrown) {
$("#error-summary").text(errorThrown);
});
});
});
正如你所看到的 - 動作返回這是成功驚動簡單的字符串。你可以在IE中試試這個頁面。您會注意到請求數量不會增長,因爲沒有請求實際上發送但仍然success
事件處理程序被調用並且消息被警告(這可能是一些舊的緩存消息,可能是一個成功的請求後,我是不確定)。在任何其他瀏覽器中,請求數量會增加,因爲每次單擊圖像時都會發送它們。如果你打開IE調試器 - 請求也會被髮送。我建議這是一些IE緩存相關的問題。
這是唯一的代碼還是你有console.log的地方? – artm
@artm,它是唯一幾乎精確的代碼。沒有'console.log()'s。 – Dmytro
我以前經歷過這個(我認爲是IE9),頁面在IE中是空的,當我打開控制檯調試器時它工作正常,結果'console.log'拋出了未定義的異常,因爲控制檯未打開。當你打開控制檯時,它就可以工作。可能是另一個問題,但也許是相關的。 – artm