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

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

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

4

2 回答 2

1

试试这个代码,因为错误没有设置 dataType 并且不期望 jsonp 默认数据类型
:(默认值:智能猜测(xml、json、脚本或 html))
类型:字符串

  $.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");
    }

演示

于 2013-03-19T11:43:18.213 回答
0

我会使用 $.ajax 选项:

dataType: "jsonp"

这会自动将回调选项添加到 url。http://api.jquery.com/jQuery.ajax/

于 2013-03-19T11:43:17.277 回答