2011-10-11 23 views
2

我成功發佈到我的控制器與下面的代碼,但是,成功永遠不會被命中唯一的錯誤。我究竟做錯了什麼?從控制器返回Json,從來沒有成功

JS:

$.ajax({ 
     url: '/Home/Subscribe', 
     type: 'POST', 
     dataType: 'json', 
     data: { email: $('#sube').val() }, 
     success: function (data) { 
      // get the result and do some magic with it 
      alert(data.foo); 

     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      alert(textStatus); 
     } 
    }); 

控制器:

[HttpPost] 
    public JsonResult Subscribe(string email) 
    { 
     return Json(new { foo = "bar", baz = "Blech" }); 
    } 

回答

2

在IE中,按F12打開開發人員工具。轉到網絡選項卡,然後單擊開始分析器。向您的訂閱動作發送請求 - 在下面的列表中,您將看到發送的請求和返回的狀態代碼的詳細信息。雙擊請求查看詳細信息 - 然後您可以看到您的回覆正文。如果請求因服務器錯誤而失敗,您將在您的響應正文中看到該錯誤。

2

我與你的代碼中看到一個錯誤的事情是,你必須硬編碼的網址:

url: '/Home/Subscribe' 

你永遠不應該這樣做。你應該總是使用URL傭工生成一個ASP.NET MVC應用程序的URL時:你說

url: '@Url.Action("Subscribe", "Home")' 

也是錯誤回調總是被擊中,但你沒有說你在Firebug或Chrome開發者工具欄觀察到的東西當你試圖分析AJAX請求時。如果你這樣做了,你會看到請求失敗的確切原因,因爲你會看到向服務器發送了什麼請求以及服務器將什麼響應發送回客戶端。

+0

謝謝Darin,我會用你的方法。 – jr3

+0

達林 - 跟進,你將如何解決從JavaScript文件內的URL? – jr3

+0

@Jreeter,你是什麼意思?你爲什麼想要從JavaScript解析URL? –

2

以下是我工作的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); 
    } 
});