2013-05-12 129 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得到了一些響應。