0
$.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 对象中出现错误

未捕获的 SyntaxError:意外的令牌:

为什么?

4

1 回答 1

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

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

于 2013-05-31T00:34:12.843 回答