ASP.NET MVC3& jquery.getJSON没有发出请求

时间:2012-02-20 01:14:24

标签: asp.net-mvc-3 jquery

我正在开发一个MVC 3站点,一切正常,直到我使用nuget升级到jquery1.7.1。现在我的$ .getJSON调用没有向服务器发出请求。在$ .getJSON执行之前和之后,Fiddler不会显示返回服务器和代码的请求。任何想法都将不胜感激。

以下是客户端脚本示例:

var srvBaseUrl = "http://localhost:15627/Home/";
$.getJSON(srvBaseUrl + "GetInfo", { 'id': 1 }, function (allData) {
      alert(allData);
});

和相应的服务器代码:

[HttpGet]
public ActionResult GetInfo(int id)
{
    return Json(id, JsonRequestBehavior.AllowGet);
}

我测试了服务器代码在Fiddler中构建请求的工作原理。

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,结果发现JQuery正在缓存结果。这可以解释您的上述评论,它是在您进行更改后开始工作的。

如果查看http://api.jquery.com/jQuery.getJSON/,您会发现$.getJSON只是简写

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

如果您使用$.ajax代替速记$.getJSON,则可以使用cache参数禁用缓存,这意味着您应该可以使用以下代码替换代码:

$.ajax({
  url: srvBaseUrl + "GetInfo",
  dataType: 'json',
  data: { 'id': 1 },
  success: function (allData) { alert(allData); },
  cache: false
});

答案 1 :(得分:1)

Nuget不会使用已安​​装的最新版jQuery的更新引用来更新您的Views/Shared/_Layout.cshtml文件。您需要自己更新:

<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"> </script>

修改

假设这一切都像你所说的一样,请确保你的getJSON调用是在文档就绪函数中,因为它对我来说是正常的。但是,我会改变你如何构建Url以使用辅助方法:

<script type="text/javascript">
    (function ($) {
        $.getJSON('@Url.Action("GetInfo")', { 'id': 1 }, function (allData) {
            alert(allData);
        });
    })(jQuery);
</script>

使用您的控制器操作原样在一个库存ASP.NET MVC3 Internet应用程序模板项目中测试得很好。