我們正在使用jQuery.ajax()方法在我們的MVC 3網站上的許多頁面上請求服務器數據。這些請求總是用'POST'ajax參數類型標記,並且通常在頁面加載或定時器上調用,也就是說,它們不是用戶操作的結果(例如,鼠標點擊)。jQuery GET以及POST與IE
當我們看(ELMAH)錯誤日誌中,我們看到了一些項目如下:
公共行動方法「GetMessageStats」是不是在控制「Inbox.WebUI.Areas.Application找到。 Controllers.StatusController」。
控制器動作用[HttpPost]例如
[HttpPost]
public JsonResult GetMessageStats()
{
MessageStatsViewModel model = new MessageStatsViewModel
{
TotalNoMessages = MailDB.GetMessageCount(),
MessagesInQueue = MailDB.GetQueueLength()
};
return Json(model);
}
,這裏是調用客戶端腳本:
$(function() {
var $totalMessages = $("#total-messages"),
$queuedMessages = $("#queued-messages");
function getStats() {
$.ajax({
type: "POST",
url: "/Application/Status/GetMessageStats",
dataType: "json",
cache: false,
success: function (data) {
$totalMessages.text(data.TotalNoMessages);
$queuedMessages.text(data.MessagesInQueue);
setTimeout(function() {
getStats();
}, 15000);
},
error: function (xmlHttpRequest, errorMessage, exception) {
throw errorMessage;
}
});
}
getStats();
});
在調查似乎有些瀏覽器(IE7/IE8,但也許其他人)似乎問題除了需要POST GET請求請求。請注意,用戶界面在這些瀏覽器下響應並正確運行,以便POST請求得到服務。
ELMAH報告了這個用戶代理:
的Mozilla/4.0(兼容; MSIE 6.0; Windows NT的5.1)
有其他人看到這個問題?如果是這樣,你有沒有找到一種方法來避免它?
謝謝。
請顯示您的客戶代碼,因爲這是發生這種情況。 – 2012-01-13 16:34:17
Diodeus說什麼。這更可能是客戶端代碼問題。 – Etch 2012-01-13 16:41:33
查看您的服務器HTTP日誌以獲取有關這些GET請求的更多信息。它們是在POST之前還是之後完成的,以及使用了哪些UserAgent?等。 – Stefan 2012-01-13 16:42:21