开发者

OnComplete Ajax.ActionLink parameter not Json in MVC 3?

开发者 https://www.devze.com 2023-02-07 00:36 出处:网络
I\'m using MVC 3.I have a method on the controller that returns a Json object, according to this question it should be returned to me as Json, but I am finding that is not the case:

I'm using MVC 3. I have a method on the controller that returns a Json object, according to this question it should be returned to me as Json, but I am finding that is not the case: ASP.NET MVC3 - Bug using Javascript

here's the code that I have:

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>

And the controller:

[HttpPost]
public ActionResult Delete(string id)
{
   return Json(new{Success 开发者_开发技巧= true,objectId = "testing"});
}

The first message box displays the response text which is: {"Success":True, "objectId":"testing"}

the second message box displays undefined

So it is coming back to the client correctly, I'm just not sure how to get it out?

...Stefan


The Ajax.* helpers never really worked nicely. Try using you using normal Html helpers with jquery:

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

and then in a separate javascript file:

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


You could rebuild the object like this. It worked for me.

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

function getJsonDetails_OnComplete(res) {

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

    alert(obj.message);
};
0

精彩评论

暂无评论...
验证码 换一张
取 消