Jquery 发送到jsonpCallback函数中的参数未定义

Jquery 发送到jsonpCallback函数中的参数未定义,jquery,json,ajax,jsonp,Jquery,Json,Ajax,Jsonp,我正在执行这个: $.ajax({ url: url, dataType: 'jsonp', jsonpCallback: function (data) { alert("jsonp call-back: " + data); }, success: function (a, b, c, d) { alert("call ok"); }, error: function (a, b, c, d) { alert(a.state() + " " + b + " " + c +

我正在执行这个:

$.ajax({
  url: url,
  dataType: 'jsonp',
  jsonpCallback: function (data) { alert("jsonp call-back: " + data); },
  success: function (a, b, c, d) { alert("call ok"); },
  error: function (a, b, c, d) { alert(a.state() + " " + b + " " + c + " " + d); }
});
问题是我在jsonpCallback函数中得到了未定义的数据。我还注意到,在控制台中,我收到了一条关于before语句缺少分号的错误消息。当我点击右边的链接时,我看到了我想要得到的JSON结构

  • 我在电话里错过了什么
  • 如何将请求的内容放入JS代码中

  • 管理员声称服务器是作为JSON数据提供者公开的,应该可以工作。我自己还没有验证过,但我必须假设是这样。

    jsonpCallback
    选项允许您指定或生成用于JSONP回调的函数的名称。它不是实际的回调。从文件中:

    jsonpCallback

    类型:
    String
    Function()

    为JSONP请求指定回调函数名。将使用此值代替jQuery自动生成的随机名称。最好让jQuery生成一个唯一的名称,因为这样可以更容易地管理请求并提供回调和错误处理。当您希望对GET请求启用更好的浏览器缓存时,可能需要指定回调。从jQuery1.5开始,您还可以使用函数进行此设置,在这种情况下,jsonpCallback的值被设置为该函数的返回值

    (我的重点)


    如果您只是从调用中删除该选项,jQuery将自动为您生成一个唯一的名称,并使用反序列化的JSONP数据调用您的
    success
    函数。

    您完全正确。我已经将jsonpCallback更改为“myCallback”,并添加了该方法(我更喜欢在那里有自己的名称)。现在我没有得到对该方法的调用,只是错误地告诉我被拒绝了。建议?@KonradViltersten:不允许使用现有的函数。您可以控制名称,但jQuery会创建(并随后销毁)实际函数,因为它需要将其插入到为您所做的工作中;您将在
    success
    处理程序中获得数据。如果您想自己完成(指定自己的函数等),只需定义函数,然后使用相关URL添加
    脚本
    标记。这就是JSONP的全部内容。我设法弄糊涂了。现在我回到原来的问题上来。我被拒绝了,因此,没有调用parsererror customJsonpCallback。我可以在客户端做些什么来解决它?或者我必须要求管理员做一些神奇的服务器端?具体是什么?@KonradViltersten:听起来响应不是JSONP,或者它不接受回调名称的查询字符串参数。我会在浏览器的开发者工具中查看“网络”选项卡,您可能会看到响应返回,或者根本不是JSONP格式,或者使用了错误的函数名。执行类型为json的GET(包括带前缀的回调方法名),在回复中,我可以看到数据。在我看来,这是一个有效的JSON。它说sytax错误:语句前缺少分号,但不是这样,对吗?还有什么建议吗?我在这里画空白。。。