2013-06-03 98 views
0

錯誤的細節我有一個功能,可將XML頁面的請求:如何獲得有關從AJAX請求

$.ajax({ 
    type: "GET", 
    url: "results.xml", 
    error: function(jqXHR, textStatus, errorThrown) { 
     console.log(textStatus, errorThrown); 
    }, 
    dataType: "xml", 
    success: xmlParser 
}); 

請求失敗,出現錯誤消息「錯誤」。我如何獲得關於失敗原因的更多細節?

+1

如果您不需要爲您的應用程序的錯誤消息,但只是爲了調試,最好的辦法是使用上的Chrome瀏覽器開發的網絡選項卡工具並查看請求發生了什麼。 – Shomz

+0

'textStatus'應該給出錯誤的原因。 '錯誤'已棄用。使用'fail()'代替 – karthikr

+0

所有textStatus給出的是「錯誤」... – Andrew

回答

0

你是否嘗試打開螢火蟲控制檯或其他人員的東西。你可以看到什麼是問題,因爲你有console.log(textStatus,errorThrown);這將寫在我提到的控制檯中。

+1

是的,我總是打開螢火蟲,它沒有錯誤。基本上,如果我沒有console.log Ajax請求中的錯誤,我什麼也得不到。所有的Ajax請求似乎都返回「錯誤」。有任何想法嗎? – Andrew

0

有那麼簡單。在Firebug網絡標籤中,如果你沒有看到你的被叫網址出現,加入「返回false;」阻止您的表單正常提交(因爲您將使用Ajax來完成)。

<form name="myForm" id="myForm" method="post" action=""> 
<input type="text" name="fieldName" id="fieldName" value="" /> 
<input value="Save" id="saveButton" type="submit"> 
<br /><span class="show_error"></span> 
</form> 

$(document).ready(function(){ 
    $("#myForm").submit(function(){ 
    processForm(); // do Ajax stuff 
    **return false;** // stop normal form submission so you can do it with Ajax. 
    }); 

    function processForm(){ 
    var fieldName = $('input[name="fieldName"]').val(); 
    var request = $.ajax({ 
    type: "POST", 
    url: "ajaxhandler.php", 
    data: { fieldName: fieldName}, 
    dataType: "json" //Type of response to expect from server 
    }); 
    request.done(function (msg){ 
    console.log("Worked"); 
    }); 
    request.fail(function (textStatus){ 
    $('.show_error').fadeIn(1000).html(textStatus); 
    console.error("Failed: "+ textStatus); 
    }); 
    } 

}); 

然後看看你的AJAX提交的URL響應選項卡(在我的情況下,PHP文件),並確保它返回的東西(在我的情況JSON編碼的成功或失敗的消息)。如果它沒有返回任何東西,你只會有一個錯誤,說'錯誤'。

爲什麼沒有返回,爲什麼我不能得到任何錯誤細節?事實證明,我從一個不同於我自己的服務器加載我的jQuery,沒有在我使用端口443進行ajax調用時指定https。

更改

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> was the fix for me.