服务器响应状态为500从控制器返回GET

问题描述:

您好一直在使用ajax在mvc上进行简单的搜索。我是一个有点这个错误感到困惑,因为AJAX可以与AJAX调用控制器,但是当控制器返回一个值到JS它给我的error500服务器响应状态为500从控制器返回GET

这里沟通是我的代码:

$.ajax({ 
     type: "GET", 
     url: 'SearchCustomer', 
     data: { 'name': name, 'id': customerId }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      alert(data); 
      $(data).each(function() { 

      }); 
     } 
    }); 

然后我的控制器

public JsonResult SearchCustomer(string name, string id) 
     { 

      var customers = tr.SearchCustomers(name, id); 
      return new JsonResult() { Data = customers, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 

     } 

-ive去过很多的解决方案之前就已经提出这个问题,也尝试过,但令人惊讶并没有工作..所以帮助! :P欢呼

您应该摆脱contentType设置,因为您没有发送JSON。此外,您的控制器操作的网址看起来不太有效。如果您使用默认路由,它通常应该看起来像{controller}/{action}。我会建议你使用Url助手来生成它。

而且在你的控制器动作,您已经使用了Data属性来发送的结果,所以这是你应该在你的成功回调以通过使用循环什么:

$.ajax({ 
    url: '@Url.Action("SearchCustomer")', 
    type: 'GET', 
    data: { 'name': name, 'id': customerId }, 
    success: function (result) { 
     $(result.Data).each(function() { 

     }); 
    } 
}); 

你应该寻找的是另一件事你是从你的控制器动作发送到视图模型:

var customers = tr.SearchCustomers(name, id); 

目前尚不清楚这是什么客户收集的类型,但你应该确保它是JSON序列化。这意味着Customer模型不应该在对象图中包含任何循环引用。如果是这样,您将不得不排除它们,理想情况下通过使用视图模型并仅发送视图所需的属性。

+0

感谢通过使用视图模型它像一个魅力工作!因为你怀疑客户不是JSON序列化,这就是为什么我得到错误!非常感谢Darin – 2013-03-17 01:41:07

+0

还有一件事我注意到我的网址没有在正确的控制器/方法形式中,但是如果我以这种形式创建了网址就像 控制器/控制器/方法,这就是为什么我必须删除控制器 - 坦率地说,我没有知道为什么会发生这种情况 – 2013-03-17 03:23:16