jQuery GET 以及使用 IE 的 POST

标签 jquery ajax asp.net-mvc-3 post

我们使用 jQuery.ajax() 方法来请求 MVC 3 网站上多个页面上的服务器数据。这些请求始终标有“POST”ajax 参数类型,并且通常在页面加载时或可能在计时器上调用,也就是说,它们不是用户操作(例如鼠标单击)的结果。

当我们查看 (Elmah) 错误日志时,我们会看到以下许多条目:

A public action method 'GetMessageStats' was not found on controller 'Inbox.WebUI.Areas.Application.Controllers.StatusController'.

Controller 操作标有 [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)

还有其他人遇到过这个问题吗?如果是这样,您是否找到了避免这种情况的方法?

谢谢。

最佳答案

对于它的值(value),回复:多余的 GET,我发现有一些工具栏/安全服务可以“检查”网址以确保它们有效。我相信 TrendMicro 拥有一个 Web of Trust 类型的插件,可以重新轮询站点以检查它们是否存在恶意软件。

您是否尝试过使用简写 ajax 方法,例如 $.post()?另外,如果您要获取数据,是否有需要 POST 的具体原因?

如果您通过 Fiddler 或您选择的工具生成请求,您在响应中是否会收到相同的错误?

关于jQuery GET 以及使用 IE 的 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8853883/

相关文章:

javascript - 遍历对象时避免在 jQuery 中重复 .each()

javascript - 在 URL 中发布多个变量并使用复选框

javascript - 如何处理 AJAX 站点中繁忙的图标?

jquery - 在 MVC 中将 Json Datetime 分配给 TextBoxFor 时格式错误

Jquery - 将下拉菜单转换为单选按钮

javascript - 是否有默认方法来获取 jQueryUi 小部件中的内部属性?

javascript - Jquery AJAX 检索 PHP 变量

c# - 在 MVC 3 中实现 Controller 创建策略的最佳方式

jquery - IIS 上的 MVC3 应用程序中的路由问题

jquery - 使用 css 和 jquery 的下拉菜单