使用jQuery/AJAX和JSONP时没有响应

3
我正在尝试使用jQuery/AJAX进行跨域请求。我有以下代码:
$.ajax({
   url: "http://www.cjihrig.com/development/jsonp/jsonp.php?callback=jsonpCallback&message=Hello",
   crossDomain:true
})
.done(function( msg ) {
  alert( "Done : " + msg );
})
.fail(function( msg) {
  alert( "Fail : " + msg);
})
.always(function( msg ) {
  alert( "Always : " + msg );
});

当直接调用时,http://www.cjihrig.com/development/jsonp/jsonp.php?callback=jsonpCallback&message=Hello 返回 JSON 对象,并且以传统的方式(即通过动态脚本标记注入)使用 JSONP 时工作正常。

但是,为什么我在使用 jQuery/AJAX 时会出错呢?


你需要告诉jQuery使用JSONP。http://jsfiddle.net/CttQZ/ - JJJ
好的,非常感谢。当从本地机器进行测试时,这个也不起作用吗? - copenndthagen
2个回答

1

尝试这段代码,因为错误没有设置dataType,也不期望默认的jsonp。
dataType:(默认:智能猜测(xml、json、script或html))
Type:字符串

  $.ajax({
   url: "http://www.cjihrig.com/development/jsonp/jsonp.php?callback=jsonpCallback&message=Hello",
   dataType: 'jsonp',
   crossDomain:true,
    jsonp: false,
    success: jsonpCallback,
})
.done(function( msg ) {
  alert( "Done : " + msg );
})
.fail(function( msg) {
  alert( "Fail : " + msg);
})
.always(function( msg ) {
  alert( "Always : " + msg );
});

 function jsonpCallback(data){
        alert("jsonpCallback");
    }

演示


我能进一步优化代码,比如分割URL并将查询字符串部分(?后面的内容)放在一个单独的变量中吗? - copenndthagen
你可以使用一个名为params的变量,并将其与"http://www.cjihrig.com/development/jsonp/jsonp.php?"+params 进行连接。 @testndtv - Alessandro Minoccheri
其实我想问的是是否可能在单独的AJAX设置变量中定义"callback=jsonpCallback&message=Hello"这一部分?另外我的回调函数没有被执行...我该怎么办?就像这里我定义了函数jsonpCallback()...但它并没有被调用... - copenndthagen
针对这个问题,我找到了这个问题,希望对你有所帮助:https://dev59.com/clfUa4cB1Zd3GeqPLtaL @testndtv - Alessandro Minoccheri
所以在你的例子中,被调用的是成功函数而不是jsonpcallback... - copenndthagen
显示剩余6条评论

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接