Asp.net mvc 3 从控制器返回Json,从未成功
我正在用下面的代码成功地发布到我的控制器,然而,成功永远不会被击中,只有错误。我做错了什么 JS: 控制器:Asp.net mvc 3 从控制器返回Json,从未成功,asp.net-mvc-3,jquery,Asp.net Mvc 3,Jquery,我正在用下面的代码成功地发布到我的控制器,然而,成功永远不会被击中,只有错误。我做错了什么 JS: 控制器: [HttpPost] public JsonResult Subscribe(string email) { return Json(new { foo = "bar", baz = "Blech" }); } 我发现您的代码有一个错误,那就是您硬编码了url: url: '/Home/Subscribe' 你不应该这样做。在ASP.NET M
[HttpPost]
public JsonResult Subscribe(string email)
{
return Json(new { foo = "bar", baz = "Blech" });
}
我发现您的代码有一个错误,那就是您硬编码了url:
url: '/Home/Subscribe'
你不应该这样做。在ASP.NET MVC应用程序中生成url时,应始终使用url帮助程序:
url: '@Url.Action("Subscribe", "Home")'
另外,您还说错误回调总是被命中,但您没有说明在试图分析AJAX请求时在FireBug或Chrome Developer工具栏中观察到的情况。如果您这样做了,您将看到请求失败的确切原因,因为您将看到向服务器发送的请求以及服务器向客户端发送的响应。以下是我的jQuery ajax代码片段。你的控制器看起来不错。我假设您已经验证了它实际上是通过使用断点被调用的
var p = {
email: $('#sube').val()
};
$.ajax({
url: '@Url.Action("Subscribe", "Home")'
type: 'POST',
data: JSON.stringify(p),
dataType: "text json",
contentType: "application/json",
success: function (data) {
// get the result and do some magic with it
alert(data.foo);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
在IE中,按F12打开开发人员工具。转到“网络”选项卡并单击“启动探查器”。向订阅操作发送请求-在下面的列表中,您将看到已发送请求和返回状态代码的详细信息。双击请求以查看详细信息-然后您可以查看您的响应主体。如果请求因服务器错误而失败,您将在响应的正文中看到该错误。谢谢Darin,我将应用您的方法。Darin-后续,您将如何从javascript文件中解析URL?@Jreeter,您的意思是什么?为什么要从javascript解析url?例如,在js文件中调用url:“@url.Action”(“Subscribe”,“Home”)”将不起作用。硬编码不好我同意,还有什么其他选择?
var p = {
email: $('#sube').val()
};
$.ajax({
url: '@Url.Action("Subscribe", "Home")'
type: 'POST',
data: JSON.stringify(p),
dataType: "text json",
contentType: "application/json",
success: function (data) {
// get the result and do some magic with it
alert(data.foo);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});