jQuery AJAX工作返回mvc 3局部视图,但jQuery加载不

我正在尝试使用MVC 3中的局部视图填充div。我的控制器看起来像这样:

[HttpPost] public ActionResult GetCustomerList(string searchString) { var custService = new CustomerViewModels(); var custListVM = custService.GetSearchList(searchString); return PartialView("GetCustomersList", custListVM); } 

我的jQuery调用看起来像这样:

 function getCustomerList(searchCriteria) { $.ajax({ url: 'Home/GetCustomerList', type: 'POST', async: false, data: { searchString: searchCriteria }, success: function (result) { $("#customerTabBody").html(result); } }); }; 

它工作正常。 我开始怀疑是否可以使用jQuery加载方法用更少的代码执行相同的操作并写下:

 function getCustomerList(searchCriteria) { $("#customerTabBody").load('Home/GetCustomerList', { searchString: searchCriteria }); }; 

它返回一个错误,指出无法找到资源。 我尝试使用@ Url.Action,但它编码了我硬编码的相同控制器路径。 在Firebug中,我可以看到发布到的URL是相同的,并且searchString参数在两个实例中的格式相同。

有什么区别 – 为什么加载不起作用?

谢谢

负载的 Jquery文档说…

 The POST method is used if data is provided as an object; otherwise, GET is assumed. 

由于您将数据作为对象传递,因此必须根据文档进行后调用。 此外,您通过$ .ajax从控制器获取所需数据,因此控制器操作方法似乎没问题。 使用load发送ajax请求时可能会出现一些错误。 你可以在firebug中检查这个。

你能试试看看它是否有效吗?

 function getCustomerList(searchCriteria) { $('#customerTabBody').load('@Url.Action("GetCustomerList", "Home")', { 'searchString': searchCriteria }); }; 

我很确定你的.load()调用执行GET请求而不是POST。 MVC 3和大多数其他.NET AJAX事务(作为WebMethod修饰的方法,如Web服务和页面方法)需要POST数据。 在这种情况下,您只需要坚持使用有效的方法。 正如您在工作$ .ajax()调用中看到的那样,请求方法是一个POST。 如果你想简写一些代码,请使用.ajaxSetup()和.post() 。