2015-04-03 71 views
1

我有這段代碼使用Ajax提交表單數據。讓我們看看這裏:Ajax帖子正確形成,但不返回成功數據

$(document).ready(function(){ 

    $('input.friend-request').click(function() { 
     addFriend(); 
    }); 
}); 

function addFriend() { 
    var val = 'test'; 
     $.ajax({ 
      type: "POST", 
      url : "server.php", 
      data : $("#addFriend").serialize(), 
      //console.log(data); 
      success : function(data) { 
       console.log(data); 
       if (data==1) { 
        //$('input.friend-request').hide(); 
        $("#addFriendSuccess").html('friend request sent').fadeIn(1000); 
        $("#addFriendSuccess").fadeOut(5000); 
       } else { 
        alert('something is wrong'); 
       } 
      } 
     },"json"); 
} 

這是處理表單數據插入到數據庫中的server.php文件代碼。

include 'db.php'; 

$session = $_POST['session']; 
$friend = $_POST['friend']; 
if ($session = $_POST['session'] && $friend = $_POST['friend']) { 
    $newSql = "INSERT INTO friend_request(user_id,friend_id) VALUES ('$session', '$friend')"; 
    $addQuery = mysqli_query($db, $newSql); 
    echo '1'; 
} 

在這個階段一切正常,數據插入正確的數據庫。如果數據是成功的echo '1'這裏返回:

if (data==1) { 
    $("#addFriendSuccess").html('friend request sent').fadeIn(1000); 
    $("#addFriendSuccess").fadeOut(5000); 
} 

我想顯示用戶在適當的DIV(addFriendSuccess)的消息,該分區包括在體內。但它不起作用,不會向用戶顯示任何消息。即使console.log(data)也不會記錄任何內容。這裏可能發生了什麼錯誤?

+0

你在jQuery的調試檢查,如果它在這一行暫停:'$( 「#addFriendSuccess」)HTML( '好友請求發送')淡入(1000)。 ' – renakre 2015-04-03 18:34:07

+0

@ekraner我該怎麼做?謝謝 – 2015-04-03 18:36:06

+0

在Chrome中,您可以按F12並選擇來源,然後選擇您的頁面。然後放下休息。這也可能與Ajax的工作方式有關。 Ajax是異步的。對$ .ajax()的調用只是啓動ajax調用。然後執行它後面的代碼行。你可以推斷:http://jqfundamentals.com/chapter/ajax-deferreds – renakre 2015-04-03 18:37:44

回答

-1

如何:

function AddFriend() { 
    return $.ajax({ 
     type: "POST", 
     url : "server.php", 
     data : $("#addFriend").serialize(), 
    }); 
} 

function AddFriendError(x, y, z) { 
    alert(x + '\n' + y + '\n' + z); 
} 

function AddFriendResult(jqXHR, textStatus) 
{ 
    var data = JSON.parse(jqXHR);//I changed this, you can also try this again below.. 

    if (data === "1") { //or data === "1" 
     $("#addFriendSuccess").html('friend request sent').fadeIn(1000); 
     $("#addFriendSuccess").fadeOut(5000); 
    } 
} 

$.when(AddFriend()).then(AddFriendResult, AddFriendError); 
+0

@ekraner它顯示延期沒有定義。如何解決這個問題?謝謝 – 2015-04-03 19:07:38

+0

'$ .when.apply ...'應該在'AddFriend()'函數內,以前的代碼有語法錯誤,你可以再試一次嗎? – renakre 2015-04-03 19:16:05

+0

@ekraner它似乎沒有工作。飛濺到控制檯'對象不是一個功能'。你可以在你的本地嘗試我原來的帖子嗎?我感謝您的幫助。謝謝 – 2015-04-03 19:33:41