2011-11-25 95 views
1

我有一個jQuery的功能,這是使用AJAX來發送必要的信息才能正常運行相應的腳本:如何檢測AJAX中的錯誤?

$("#changeUseridForm").submit(function(){ 
    $.ajax({ 
     type: "GET", 
     url: "API/root/users/changeUsername.php", 
     data: { 
     newUsername: ("#newUserid", this).val(), 
     password: ("#retypePass", this).val(), 
     xml: 1, 
     }, 
     dataType: 'xml', 
     success: function(xml){ 
      if($(xml).find("success").length > 0){ 
       alert("Username changed successfully!"); 

       $("#changeUserid").hide(); 
       $("#BackToMainMenu").hide(); 
       $("#MainPage").show(); 
       $("#AddLinkButton").show(); 
       $("#ChangeUserOptions").show(); 
       $("#ChangeUserDataButton").show(); 
       $("#ShowPosts").show(); 
      } 
      else if($(xml).find("error").length > 0){ 
       alert("You have to fill all the fields!"); 
      } 
     } 
    }); 

    return false; 
}); 

我有幾個功能,像這樣的,完美運行;這一個不是。我驗證了我所有的變量和腳本。他們拼寫正確。它沒有達到引用的腳本。我認爲AJAX代碼可能有問題,但我無法檢測到哪個錯誤。我試圖在瀏覽器的網頁檢查器上搜索它,但由於某些原因,我不知道爲什麼頁面正在重新加載,所以我無法弄清楚。 (由於此功能沒有在它window.location.reload()任何地方。)

+5

看在'阿賈克斯的文檔()',你可以指定一個錯誤處理函數,獲取有關什麼地方出了錯 –

+0

@Pekka細節我會發布,作爲一個答案。 OP,如果你只是在調試你可以檢查控制檯/螢火蟲在http請求中的錯誤。 –

+0

它不應該是'POST'請求​​嗎? – talnicolas

回答

1

嘗試建立一個Proxy或使用Firefox插件捕捉GET請求(也可以使用Wireshark)

,那麼你可以看到,如果有對此頁面的請求API/root/users/changeUsername.php 有可能此頁面的API/root/users/changeUsername.php返回302重定向,

檢查GET請求的http響應並將其發送

+0

像Firebug這樣的Firefox插件? 不幸的是,與其他測試瀏覽器(Safari,Opera)相比,我在Firefox中獲得了非常不同的結果。在指定的行上,我有:'(「#newUserid」,this).val()這個錯誤:'(「#newUserid」,this).val不是一個函數' 。 此外,我有其他功能的這條線,他們完美運行。 沒有一個瀏覽器可以運行腳本或返回任何結果(HTTP)。 –

+0

以及我相信它需要$符號來識別功能試試這個數據data: { newUsername: $("#newUserid", this).val(), password: $("#retypePass", this).val(), xml: 1, }, Ben

+0

是的,這是問題..非常感謝你! :) –

0

您可以使用螢火蟲檢測(調試)很多錯誤。在這種情況下,您可以使用net選項卡並檢查persists以查看造成reloaded頁面的請求。

enter image description here

+0

我做到了,但我沒有得到任何關於我想執行的腳本的信息。 –