2012-02-20 39 views
1

我正在一個MVC 3網站上工作,一切工作,直到我util我升級到jquery1.7.1使用nuget。現在我的$ .getJSON調用不會向服務器發出請求。在執行$ .getJSON之前和之後,Fiddler不顯示請求返回到服務器和代碼。任何想法,將不勝感激。ASP.NET MVC3&jquery.getJSON沒有請求

下面是一個簡單的客戶端腳本:

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); 
} 

我測試服務器代碼的工作建立在提琴手的請求。

+0

螢火蟲等任何錯誤? – 2012-02-20 01:26:24

+0

@MarekKarbarz沒有錯誤。提琴手和螢火蟲都表明,甚至沒有任何要求。 – DonD 2012-02-20 01:32:13

+0

你怎麼觸發Ajax調用?你可以發佈一些代碼嗎?可能會出現1.5.1和1.7.1之間的一些突變,導致代碼混亂。 – 2012-02-20 01:35:17

回答

1

Nuget不打算更新您的Views/Shared/_Layout.cshtml文件,更新的參考文件已安裝最新版本的jQuery。您將需要此更新自己:

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

編輯

假設是一切爲了像你說的,請確保您的getJSON調用文檔ready函數裏面,因爲它工作的,對我來說。但是我會改變你如何構建URL中使用輔助方法來代替:

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

這在A股進行測試了罰款ASP.NET MVC3互聯網應用程序模板項目中使用您的控制器動作原樣。

+0

是的,我想到了,並沒有更新。應該包括在我原來的筆記。 – DonD 2012-02-20 01:19:54

+0

@DonD你升級了什麼版本的jQuery? – tawman 2012-02-20 01:21:30

+0

與MVC3一起安裝的版本是1.5.1 – DonD 2012-02-20 01:23:48

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 
});