Ajax 跨域请求不调用回调



我一直在尝试使用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,但它从未被调用。任何帮助都会非常感激。非常感谢。

删除回调函数周围的引号:

    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);
          }
        });
    });

小提琴:点击我

但是你还有其他错误,我稍后再检查

注意:除非你想使用一个特定的回调值,否则你不应该在json中使用回调值,另一方面,json使用回调值(自动生成),如果你想回调一个函数,把它放在ajax的完成或成功回调函数

jsonp数据类型只支持json格式的数据。

在您的情况下http://www.netflix.com不支持json输出类型,它发送回html内容作为响应,所以我不认为可以使用jsonp与给定的资源

相关内容

  • 没有找到相关文章

最新更新