返回的jsonp出错

时间:2013-05-31 00:29:02

标签: ajax json

$.ajax({
    type: 'GET',
    url: 'http://api.xhanch.com/islamic-get-prayer-time.php?lng=34.4366455078125&lat=31.48957771850194&yy=2013&mm=5&gmt=3&m=json',
    dataType: 'jsonp',
    success: function () {
        console.log('Success!');
    },
    error: function () {
        console.log('Uh Oh!');
    },
    jsonp: 'jsonp'
});

当我运行此代码时,我在返回的json对象中出现错误

  

Uncaught SyntaxError:意外的令牌:

为什么?

1 个答案:

答案 0 :(得分:0)

问题是jsonp: 'jsonp'正在调用代码中不存在的方法jsonp。如果您真的需要这个,只需创建方法或删除它。

删除

$.ajax({
    type: 'GET',
    url: 'http://api.xhanch.com/islamic-get-prayer-time.php?lng=34.4366455078125&lat=31.48957771850194&yy=2013&mm=5&gmt=3&m=json',
    dataType: 'jsonp',
    success: function () {
        console.log('Success!');
    },
    error: function () {
        console.log('Uh Oh!');
    },
});

或创建方法

$.ajax({
    type: 'GET',
    url: 'http://api.xhanch.com/islamic-get-prayer-time.php?lng=34.4366455078125&lat=31.48957771850194&yy=2013&mm=5&gmt=3&m=json',
    dataType: 'jsonp',
    success: function () {
        console.log('Success!');
    },
    error: function () {
        console.log('Uh Oh!');
    },
    jsonp: { jsonp: false, jsonpCallback: "callbackName" }
});

function callbackName(){
   /*do something*/
}

参考:http://api.jquery.com/jQuery.ajax/

JSONP

  

Type:String覆盖jsonp请求中的回调函数名称。   在'callback =?'中将使用此值代替'callback'部分   url中的查询字符串。所以{jsonp:'onJSONPLoad'}会产生   在'onJSONPLoad =?'传递给服务器。从jQuery 1.5开始,设置   jsonp选项为false可防止jQuery添加“?回调”   字符串到URL或尝试使用“=?”转型。在   在这种情况下,您还应该显式设置jsonpCallback设置。   例如,{jsonp:false,jsonpCallback:“callbackName”}