我一直在尝试使用jquery来处理跨域请求但是虽然请求成功但是浏览器抱怨无法解析结果。 我知道JsonP附加了一个回调参数,但SO上的所有问题都没有说明回调实际上是如何被调用的。 有人可以澄清JsonP的回调是如何执行的,并帮助我解决这个问题。
<body>
<ul id="tweets">Test</ul>
</body>
Javascript for this
window.myCallback = function(data) {
console.log(data);
$("#tweets").append("<div>Hello</div>");
};
$(document).ready(function(){
$.ajax({
url: 'http://www.netflix.com',
type: 'GET',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'myCallback',
contentType: 'text/html',
success: function (data) {
alert(data);
}
});
});
我在这里也有一个JsFiddle http://jsfiddle.net/3yVC7/
所以在这个例子中我只想在调用回调时修改“tweets”div,但它永远不会被调用。任何帮助将非常感激。非常感谢。
答案 0 :(得分:2)
删除回调函数周围的qoutations:
var myCallback = function(data) {
console.log(data);
$("body").append("<div>Hello</div>");
};
$(document).ready(function(){
$.ajax({
url: 'http://www.google.com',
type: 'GET',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: myCallback,
contentType: 'text/html',
success: function (data) {
alert(data);
}
});
});
小提琴:click me
但你还有其他错误,我稍后会检查
注意:你不应该使用jsonp的回调,除非你想使用特定的回调值,另一方面json使用回调值(自动生成),如果你想回调一个函数将它放在完整的位置或者ajax的成功回调函数
答案 1 :(得分:0)
jsonp数据类型仅支持json格式的数据。
在你的情况下,http://www.netflix.com不支持jsonp输出类型,它会发送回html内容作为响应,因此我认为不可能将jsonp
与给定资源一起使用