我在跨域ajax调用上得到一个json解析错误,不知道如何摆脱这个问题

时间:2012-11-13 00:24:43

标签: ajax jquery cross-domain jsonp

电话看起来像是这样

$.ajax({
  url: url,
  crossDomain: true,
  dataType: 'jsonp',
  success: function(){console.log('success');}
})

从服务器代码中可以这样

string data = callback + "(" jsonData + ")";
send("application/javascript",data);

jsonData有效,我很确定。我已经在网上测试了许多json验证器。我也尝试在服务器代码中将内容类型从application / javascript切换到application / json,但它没有区别。

我有这个工作的唯一方法是覆盖发送我的jquery的回调函数,并且让它不是调用jquery成功函数,而是调用我自己的全局函数。以下是该解决方法的代码

$.ajax({
   url: url,
   crossDomain: true,
   dataType: "jsonp",
   jsonpCallback: "onMyDataReceived"       
 })

  function onMyDataReceived(jsonData){  doStuff(jsonData ); }

但我觉得这更像是一个黑客,而不是让它自然地从$ .ajax.sucess函数流出来。有关为什么第一个代码段会出错的任何帮助?

1 个答案:

答案 0 :(得分:0)

我真的不确定为什么第一个片段不起作用,但尝试以下

$.getJSON(url+"&callback=?",function(data){ console.log(data);})

在我的案例中工作。