【发布时间】:2012-11-13 08:50:47
【问题描述】:
电话看起来像这样
$.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 ); }
但我觉得这更像是一种 hack,而不是让它自然地从 $.ajax.sucess 函数中流出。关于为什么第一个代码 sn-p 会出错的任何帮助?
【问题讨论】:
标签: ajax jquery cross-domain jsonp