我有一些 jQuery 成功到达端点,这是我的代码
$.ajax({
dataType: "json",
type: "GET",
url: "https://url.that-works.com/env/Development/GetDevs/",
username: "username",
password: "password",
data: "callback=?"
})
.done(function (data) {
alert("success");
})
;
该代码返回以下 JSON 响应 - 我可以在 Chrome 开发者工具中看到该响应:
{
"developments": [
{
"name": "h2010 Ph2"
},
{
"name": "The Meadows Ph2"
},
{
"name": "h2010 Ph3"
},
{
"name": "h2010 Ph4"
},
{
"name": "The Meadows Ph3"
}
]
}
我已检查返回的 JSON 是否有效,但我不断收到错误消息:Uncaught SyntaxError: Unexpected token :
我不确定我到底做错了什么,也不知道为什么会收到此消息,任何指导将不胜感激。
类格拉。
最佳答案
在 jQuery 文档中,您可以找到以下内容:
“除非请求在其请求选项中包含 jsonp: false
,否则跨域 json
请求将转换为 jsonp
。”
因此,您可能正在进行跨域调用,并且它会转换为 jsonp
,因为您已指定 dataType: 'json'
。
当处于 JSONP 模式时,jQuery 会寻找这样的响应:
jQuery18406445654265099913_1319844792316({
"developments": [
{
"name": "h2010 Ph2"
},
{
"name": "The Meadows Ph2"
},
{
"name": "h2010 Ph3"
},
{
"name": "h2010 Ph4"
},
{
"name": "The Meadows Ph3"
}
]
})
但不是 JSON 字符串,因此您在转换过程中会收到错误。 JSONP 需要 JavaScript,而不是字符串。 如果您看一下 jQuery 代码,您可以更清楚地理解,但这只是一般情况。
关于javascript - 未捕获的语法错误 : Unexpected token : when returning JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31520670/