我有一个jsonp调用另一个获取数据的域,但它只是json,没有包含在函数中。因此,它会出现一个parserror错误。但是,数据就在那里 - 我可以看到它。
即使出现此错误,是否可以使用返回的数据?基本上,我可以以某种方式将错误数据输入变量吗?
基本电话:
$.ajax({
type: 'GET',
url: api_url,
jsonpCallback: 'jsonCallback',
dataType: 'jsonp',
success: function(json) {
console.log('success');
console.log(json);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log("error: " + textStatus);
}
});
错误:Uncaught SyntaxError: Unexpected token :
检查错误(在chrome中)显示有效的json,但不显示jsonp ...
答案 0 :(得分:1)
您可以在调试工具中看到JSON数据,但除非格式正确,否则无法在代码中访问它。 JSONP的工作原理是在您的网页<script>
中添加<head>
标记。这就是它绕过同源政策的方式。 JSONP不是JSON,它只是一个JavaScript文件;一个函数调用。如果它没有包含在函数调用中,那么它不是JSONP,也不能这样使用。
您使用的服务器需要支持JSONP才能使用他们的数据跨域。看看他们是否支持CORS,如果他们这样做,那么你可以试试。
如果服务器不支持任何跨域技术(JSONP或CORS),那么您唯一的另一个选择是在您自己的webhost上创建一个脚本作为代理。对服务器进行AJAX调用,并让它重新传回JSON数据。