這裏是我的控制器動作的代碼:jQuery.ajax響應數據不確定
[HttpPost]
public JsonResult MyAction()
{
try
{
// Do something...
return Json(new { Success = true });
}
catch(Exception ex)
{
return Json(new { Error = ex.Message });
}
}
而且,這裏是我的腳本:
<script>
$.ajax({
type: "POST",
url: '@Url.Action("MyAction", "MyController")',
dataType: 'json'
}).done(function (data) {
alert(data.Success);
}
})
.fail(function (data) {
alert(data.Error);
});
</script>
這部作品的成功(警報顯示正確「真「),但是當動作失敗時,alert(data.Error)
顯示Undefined
。
使用FireBug,我可以看到JSON數據正確返回。爲什麼data.Error
「未定義」呢?
UPDATE:
下面是console.log(data)
輸出:
readyState
4
responseText
"{"Error":"Attempted to divide by zero."}"
status
500
statusText
"Internal Server Error"
abort
function()
always
function()
complete
function()
done
function()
error
function()
fail
function()
getAllResponseHeaders
function()
getResponseHeader
function()
overrideMimeType
function()
pipe
function()
progress
function()
promise
function()
setRequestHeader
function()
state
function()
statusCode
function()
success
function()
then
function()
更新2:
對不起,有什麼錯我的代碼(不是代碼在這裏,但我運行的代碼)。從console.log(data)
輸出正確的是:
Object {Error="Some error."}
設置你相應的語法,你能輸出的JSON數據返回‘時動作失敗’:' console.log(data);' – PeterKA
查看更新。 – ataravati