2011-01-24 57 views
0

我使用MVC 3,我有一個返回JSON對象控制器上的方法,根據這個問題,應該退還給我的JSON,但我發現,情況並非如此: ASP.NET MVC3 - Bug using JavascriptMVC 3中的OnComplete Ajax.ActionLink參數不是Json?

下面是我的代碼:

function DeleteItem(obj) { 
alert(obj.responseText); 
alert(obj.Success); 
} 
</script> 
</head> 

<body> 
@Ajax.ActionLink("test", "Delete", "Home", new { id = "test" }, new AjaxOptions { Confirm = "Delete?", HttpMethod = "Post", OnComplete = "DeleteItem" }); 
</body> 

而且控制器:

[HttpPost] 
public ActionResult Delete(string id) 
{ 
    return Json(new{Success = true,objectId = "testing"}); 
} 

的第一個消息框顯示響應文本是: {「成功「:的確,‘OBJECTID’:」測試「}

第二個消息框顯示undefined

所以它是回來給客戶正確的,我只是不知道如何把它弄出來?

...斯特凡

回答

1

Ajax.*助手從來沒有真正很好地工作。嘗試使用你使用普通的HTML傭工使用jQuery:

@Html.ActionLink("test", "Delete", "Home", new { id = "test" }, new { id = "delete" }) 

,然後在一個單獨的JavaScript文件:

$(function() { 
    $('#delete').click(function() { 
     if (confirm('Delete?')) { 
      $.post(this.href, { }, function(result) { 
       alert(result.Success); 
      });  
     } 
     return false; 
    }); 
}); 
+0

感謝您的建議。我仍然很想了解如何讓Ajax * helper工作,但是您的解決方案在此期間仍然有效。 – Stefan 2011-01-27 22:56:53

0

你可以重建對象是這樣的。它爲我工作。

Json: {"message":"hello", "success": true} 

function getJsonDetails_OnComplete(res) { 

    var obj = eval("(" + res.responseText + ")"); 

    alert(obj.message); 
};