我想創建一個動態網頁,它不需要回發和與服務器通信來獲取複雜的對象。我開始創建一個支持AJAX的WCF服務,然後編寫一些jQuery與服務交談。我按照這個教程http://www.codeproject.com/Articles/132809/Calling-WCF-Services-using-jQuery得到了它的工作。區別MVC控制器JsonResult和AJAX啓用WCF服務
然後我意識到我可以單獨使用MVC做到這一點,將JsonResult類型作爲控制器上的Action,遵循本教程:http://geekswithblogs.net/michelotti/archive/2008/06/28/mvc-json---jsonresult-and-jquery.aspx。
當我試圖離開.cshtml頁面的方式,並插入不同的服務(從WCF切換到MVC),我的JavaScript開始崩潰(當它試圖評估JS中的response.length) 。我使用WebDevHelper工具來檢查JSON文件的響應內容並找出一個關鍵區別。
的MVC JsonResponse給了我這樣的結果:["anthony"]
的支持AJAX的WCF服務使我這個:{"GetUserResult":["anthony"]}
的WCF方法是這樣的:
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
string[] GetUser(string Id)
{ return new string[] { "foo", "bar" }; }
MVC方法如下:
public JsonResult GetUser(string Id)
{ return Json(new string[] { "foo", "bar" }); }
GetUser返回一個字符串數組(在這種情況下,它總是返回一個ite在WCF服務的方法名稱被稱爲'GetUser',但我不完全理解我在看什麼,我不知道爲什麼WCF會提供不同的數據,然後MVC,最後,爲什麼javascript能夠很好地評估result.length,但是會因爲在使用較小的MVC數據時找不到length屬性而崩潰?看來JSON不包括JsonResult中的數組信息?
謝謝!