服务器响应状态为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
模型不应该在对象图中包含任何循环引用。如果是这样,您将不得不排除它们,理想情况下通过使用视图模型并仅发送视图所需的属性。
感谢通过使用视图模型它像一个魅力工作!因为你怀疑客户不是JSON序列化,这就是为什么我得到错误!非常感谢Darin – 2013-03-17 01:41:07
还有一件事我注意到我的网址没有在正确的控制器/方法形式中,但是如果我以这种形式创建了网址就像 控制器/控制器/方法,这就是为什么我必须删除控制器 - 坦率地说,我没有知道为什么会发生这种情况 – 2013-03-17 03:23:16