0

我有一个向 XML 页面发出请求的函数:

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

请求失败并显示错误消息“error”。如何获得有关失败原因的更多详细信息?

4

2 回答 2

0

简短地说。在萤火虫网络选项卡中,如果您没有看到您调用的 url 出现添加“return 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 编码的成功或失败消息)。如果它没有返回任何东西,你只会有一个错误,上面写着“错误”。

为什么什么都没有返回,为什么我不能得到任何错误细节?事实证明,当我使用端口 443 进行 ajax 调用时,我正在从与我自己的服务器不同的服务器加载我的 jQuery,而没有指定 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. 
于 2014-06-13T00:01:49.603 回答
0

您是否尝试打开诸如萤火虫控制台或其他一些工作人员之类的东西。在那里你应该看到什么是问题,因为你有 console.log(textStatus, errorThrown); 这将写在我提到的控制台中。

于 2013-06-03T15:56:56.670 回答