2013-05-12 143 views
0

你好,那些查看这个!阿贾克斯总是返回错误

我遇到了一些麻烦的Ajax调用。 在我的MVC3项目中,我有一个数据库,当用户在他的好友列表中添加另一个用户时,它会注册一行。

下面是HTML /剃刀代码:

@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看起来像什么上面呢,现在阿贾克斯得到的东西,返回成功,但我还是两次添加到数据库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"); 
     } 
    }); 
}); 
+0

'JSON.stringify(acceptThisFriend)'返回什么'/ Profile/AddFriend'返回什么? – karthikr 2013-05-12 20:44:12

+0

你有什么'/ Profile/AddFriend'方法?你可以将它添加到你的文章? – 2013-05-12 20:45:48

+0

对不起,迟交的答案。 @karthikr stringify返回要添加的朋友的ID。 AddFriend不返回任何内容,它是无效的。这可能是问题吗? – Mappan 2013-05-12 21:23:49

回答

0

改变了成功的功能是这样的:

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

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