当jquery ajax响应处理程序无法找到以该值为前缀的空格时,它似乎失败了。这个ajax respose失败
{"ip":"bla"}
通过
{"ip": "bla"}
以下是我尝试的简化版代码
<html lang="en">
<body>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
$.ajax({
type: "GET",
url: "https://api.myjson.com/bins/4as0v",
dataType: 'jsonp',
contentType: "application/json",
success: function (data) {
alert('Success call back called')
}
})
</script>
Hi
</body>
</html>
以下是我得到的错误
Uncaught SyntaxError: Unexpected token :
现在,我尝试将$ .ajax中的dataType更改为text并手动将回调中的文本解析为json,这样可行。
dataType: 'jsonp',
...
success: function (data) {
data = JSON.parse(data);
}
然而,在我的实际应用程序中,我将需要发出跨域请求,因此强制使用jsonp dataType。我还尝试了多个空格分隔的值(从Jquery 1.5开始)尝试将jsonp解释为文本但没有成功。
请注意,我打算从中访问数据的url的ReponseHeader没有将Access-Control-Allow-Origin属性设置为*
非常感谢任何提示/建议。
答案 0 :(得分:2)
首先,您的代码正在请求json url而不是jsonp。一个jsonp应该有一个回调函数来工作。请阅读jsonp http://en.wikipedia.org/wiki/JSONP
为了您的示例,您可以使用$ .getJSON来读取json。
$.getJSON('https://api.myjson.com/bins/4as0v', function(data){
alert('Success call back called \n'+data.ip)
});