在我解释我的问题之前,我想提一下我jsonp
的天真。这实际上是我第一次尝试使用JSONP
。
我使用jquery ajax调用来从网站上撤回数据。
我的jquery代码在
下面$.fn.checkTPS = function(){
return this.each(function(){
var interval;
$(this).on('keyup', function() {
var api_key = 'asdfasfsadfsadfsad';
var format = 'json';
var username = 'dame@example.co.uk';
var self = $(this);
var selfValue;
var feedback = $('.tps-feedback');
if(interval === undefined){
interval = setInterval(function(){
if(selfValue !== self.val()) {
selfValue = self.val();
if (selfValue.length > 9){
$.ajax({
url: 'https://www.selectabase.co.uk/api/v1/tps/' + selfValue + '/',
type: 'get',
dataType: 'jsonp',
data: {
format: format,
username: username,
api_key: api_key
},
success: function(data) {
console.log(data);
},
error: function() {
},
jsonp: 'jsonp'
});
}
}
},3000);
}
});
});
};
我希望提供selectabase.co.uk
的服务,根据他们的说法我应该如何使用服务https://www.selectabase.co.uk/api/v1/tps/[number]/?format=json&username=[username]&api_key=[api key]
当我使用ajax发送请求时,我收到此错误Uncaught SyntaxError: Unexpected token :
,点击后会打开
{"ctps": false, "number": "1452500705", "resource_uri": "/api/v1/tps/01452500705/", "tps": false}
按照我想要的方式但不知道这个错误是什么 unexpected token :
我从inspect元素标签中复制了以下链接(你可以看到下图)我认为这是json https://www.selectabase.co.uk/api/v1/tps/01452500705/?jsonp=jQuery17102731868715648129_14120077325500&format=json&username=dame40example.co.uk&api_key=asdfasfsadfsadfsad&_=14120077325500
我在Chrome中复制了inspect element > source tab
下面的链接。我想我应该添加一张图片来正确描述我从中复制的json数据和链接的位置。
我希望我能够传达我的信息......请帮助,如果您有任何想法我需要添加什么......问候
答案 0 :(得分:6)
查询字符串中的format=json
可能应为format=jsonp
。服务器正在使用JSON进行回复,但您期望得到JSONP响应。但我不知道他们支持format=jsonp
,这只是猜测。
或者,如果该服务器支持CORS并允许来自您的来源的请求,则可以处理JSON(只需从您的dataType: "json"
电话中删除ajax
) 。请注意,这将要求用户使用properly supports CORS的浏览器,IE8和IE9不会。 (它们支持CORS,但不支持普通XMLHttpRequest
对象,这是jQuery 不会为你平滑的浏览器不一致。但是,如果搜索,你可以找到“插件“或类似的将处理它。”