jquery ajax.done未被激发,但总是被激发

jquery ajax.done未被激发,但总是被激发,jquery,ajax,Jquery,Ajax,我试图将jquery代码附加到第三方站点,因此我插入了一个按钮,当加载页面时,该按钮会触发请求。我遇到的一个问题是.done回调不会被触发,但.always会被触发。唯一值得一提的是,我尝试使用的页面在加载后也会发出一些ajax请求。这可能是我有这个问题的原因吗 $("<button>Test</button>").click(function(){ var url="<https url from the site>"; $.ajax(url).do

我试图将jquery代码附加到第三方站点,因此我插入了一个按钮,当加载页面时,该按钮会触发请求。我遇到的一个问题是.done回调不会被触发,但.always会被触发。唯一值得一提的是,我尝试使用的页面在加载后也会发出一些ajax请求。这可能是我有这个问题的原因吗

$("<button>Test</button>").click(function(){
  var url="<https url from the site>";
  $.ajax(url).done(function(data){
    console.log(data);
  });
}).insertBefore("div.top");
$(“测试”)。单击(函数(){
var url=“”;
$.ajax(url).done(函数(数据){
控制台日志(数据);
});
}).insertBefore(“div.top”);

只有当您的ajax调用finish成功时,您的
done
功能才会执行,如果发生错误,则
done
永远不会被触发。
正如其名称所示,
always
方法将被触发,无论您的ajax请求是否有效。

我在Arun的帮助下解决了这个问题

分析响应时出错。因此,在我向请求中添加了一个附加参数{dataType:“json”}之后,将触发.done。现在看起来像

$.ajax(url,{
    dataType: "json"
}).done(function(data){
    console.log("Success:" + data);
}).fail(function(xhr, status, error){
    console.log("Status: " + status + " Error: " + error);
    console.log(xhr);
});

这意味着ajax请求由于某种原因而失败。。。尝试使用失败处理程序,看看失败的原因是什么
$.ajax(url).done(函数(数据){console.log(数据);}).fail(函数(jqXHR,状态,错误){console.log(jqXHR,状态,错误)})
@ArunPJohny一个简单的
console.log(arguments)
可以节省调试时间,而不是手动键入所有这些参数!每个参数集大约5秒,5*2=10秒。@self-yes。。。但我只是想说得具体一点,告诉大家有什么论据可以支持。。。此外,我还为复制粘贴的失败处理程序保存了一个代码段SO@ArunPJohny谢谢你的想法,我发现这是一个错误“parseerror”“意外标记:”谢谢你的回复,但我想知道,可能是什么问题?我检查了通话的状态,在responseText中得到了200和所有数据。@PhilippGrigoryev你能把你的全部代码放在一把小提琴上吗?我实际上发现了一个问题@ianaya89,见下面我的答案。非常感谢。