Ajax总是返回错误

时间:2013-05-12 20:41:36

标签: jquery ajax asp.net-mvc-3 razor

欢迎那些观看此内容的人!

我遇到了一个糟糕的Ajax调用问题。 在我的MVC3项目中,我有一个数据库,当用户在他的朋友列表中添加另一个用户时,该数据库会记录一行。

这是html / Razor代码:

@if(!Model.areFriends){
    <div id="AddFriendAncor" class="AddButton"><a href="#" id="@Model.theUser.userID" class="Add">Add to friendlist</a></div>
}
else
{
    <div class ="AddFriendAncor"><a href="#" id="DoneAdding">You are friends</a></div>   
}

这是Javascript / jQuery / Ajax代码。

$(".Add").on("click", function (event) {
    event.preventDefault();
    var acceptThisFriend = { "ID": event.target.id };
    $.ajax({
        type: "POST",
        url: "/Profile/AddFriend",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: JSON.stringify(acceptThisFriend),
        success: function () { alert("Works");},
        error: function ()
        {
            document.getElementById(acceptThisFriend.ID).innerHTML = "Friend Added";
        }
    });
});

您可能会注意到错误函数实际上包含了成功函数应具有的内容。 原因是它以这种方式工作。这很可怕,但我必须得到一些工作。

此外,它还向数据库添加了两个实例。这是因为它动态创建了Html,在创建它时如何取消绑定的任何想法?

编辑:AddFriend函数:

AddFriend函数改为:

    public virtual ActionResult AddFriend(string ID)
    {
        System.Diagnostics.Debug.WriteLine(ID);
        var friendID = Convert.ToInt32(ID);
        var user = u_rep.GetUser(User.Identity.Name);

        f_rep.AddFriend(user.userID, friendID);
        return Json(true);
    }

我将AddFriend更改为上面的内容,现在Ajax获取了一些内容并返回成功,但我仍然向数据库添加两次dispite,将我的Ajax更改为:

$(".Add").on("click", function (event) {
    event.preventDefault();
    var acceptThisFriend = { "ID": event.target.id };
    $.ajax({
        type: "POST",
        url: "/Profile/AddFriend",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: JSON.stringify(acceptThisFriend),
        success: function () { $("#AddFriendAncor").replaceWith("<p>Vini bætt við</p>"); },
        error: function ()
        {
            alert("fail");
        }
    });
});

1 个答案:

答案 0 :(得分:0)

将成功功能更改为:

success: function () { $("#AddFriendAncor").replaceWith("<p>Friend added</p>").unbind('click'); },

现在只发射一次。 修改后的AddFriend函数确保Ajax得到了一些响应。