Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 从控制器返回Json,从未成功_Asp.net Mvc 3_Jquery - Fatal编程技术网

Asp.net mvc 3 从控制器返回Json,从未成功

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

我正在用下面的代码成功地发布到我的控制器,然而,成功永远不会被击中,只有错误。我做错了什么

JS:

控制器:

[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);
    }
});