2012-01-17 92 views
0

所以我有這個JavaScript的工作正常到$.ajax({。然後它掛在裝載機上,沒有任何反應。ajax成功回調不起作用

$(function() { 
$('.com_submit').click(function() { 
    var comment = $("#comment").val(); 
    var user_id = $("#user_id").val(); 
    var perma_id = $("#perma_id").val(); 
    var dataString = 'comment='+ comment + '&user_id='+ user_id + '&perma_id=' + perma_id; 
    if(comment=='') { 
     alert('Please Give Valid Details'); 
    } 
    else { 
     $("#flash").show(); 
     $("#flash").fadeIn(400).html('<img src="ajax-loader.gif" />Loading Comment...'); 
     $.ajax({ 
      type: "POST", 
      url: "commentajax.php", 
      data: dataString, 
      cache: false, 
      success: function(html){ 
     alert('This works'); 
       $("ol#update").append(html); 
       $("ol#update li:first").fadeIn("slow"); 
       $("#flash").hide(); 
      } 
     }); 
    } 
    return false; 
}); 
}); 
+2

你確定你從服務器獲得了成功的響應嗎? – 2012-01-17 20:21:34

+0

目前我無法獲得除「加載評論」之外的任何內容,但什麼也沒有發生 – Sygon 2012-01-17 20:23:02

+2

在您關注成功回調之前,請確保服務器向您發送一個表示成功的響應。您也可以處理錯誤回調以查看真正發生的事情。 – 2012-01-17 20:24:56

回答

3

嘗試更換:

var dataString = 'comment='+ comment + '&user_id='+ user_id + '&perma_id=' + perma_id; 

有:

var dataString = { comment: comment, user_id: user_id, perma_id: perma_id }; 

,以確保您要發送到服務器的參數進行正確編碼。另外,請確保您調用的commentajax.php腳本正常工作,並且不會拋出一些錯誤,在這種情況下,成功處理程序將不會執行並且加載程序指示符不會被隱藏。實際上隱藏加載指示符的最好方法是使用complete事件,而不是success。即使在例外的情況下也會觸發complete事件。

也可以使用FireBug等javascript調試工具來查看封面下究竟發生了什麼。它將允許您查看實際的AJAX請求以及服務器響應的內容。它還會告訴你,如果你有JavaScript錯誤等等:你知道,當你正在做JavaScript的Web開發時,有用的東西。

+1

+1 ... Firebug或類似工具對診斷這些事情至關重要。 – 2012-01-17 20:26:53

+0

我試過使用你的'dataString',但仍然得到同樣的結果。 'commentajax.php'沒有問題,因爲當我單獨運行文件時它可以工作,並且顯然沒有任何數據插入到數據庫中。 – Sygon 2012-01-17 20:27:04

+0

@JackWillmor,好的,你在你的javascript調試工具中看到了什麼?服務器端腳本是否被執行?它成功了嗎?當你單獨調用它時,你不會發送任何數據,所以顯然你沒有在與AJAX調用相同的條件下運行它。真的,如果你不使用javascript調試工具,你就像一個盲人。沒人能幫助你。 – 2012-01-17 20:27:42