Uncaught SyntaxError: Unexpected token : when returning JSON
Uncaught SyntaxError: Unexpected token : when returning JSON
我有一些 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");
})
;
代码 returns 以下 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 文档中,您可以找到以下内容:
'Cross-domain json
requests are converted to jsonp
unless the request includes jsonp: false
in its request options.'
所以您可能正在进行跨域调用,并且它被转换为 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 代码,您可以更清楚地了解它,但这是一般情况。
终于找到答案了
在我们的例子中,我们使用的是生成上述 URL/orchestration 脚本命中以获得 JSON 等的中间件设备。我们试图做的是使用 JSONP 请求来获取此信息,但是 的编排 returns JSON 没有包含在函数中 ,这就是我们的问题所在。
相反,我们将其更改为标准 JSON get 请求,然后导致 Access-Control-Allow-Origins 错误(好linkhere)。在这一点上,我们将 Access-Control-Allow-Origins 设置添加到 orchestration/server 端 - 然后我们能够以可用的方式恢复 JSON格式化成功。
我有一些 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");
})
;
代码 returns 以下 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 文档中,您可以找到以下内容:
'Cross-domain json
requests are converted to jsonp
unless the request includes jsonp: false
in its request options.'
所以您可能正在进行跨域调用,并且它被转换为 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 代码,您可以更清楚地了解它,但这是一般情况。
终于找到答案了
在我们的例子中,我们使用的是生成上述 URL/orchestration 脚本命中以获得 JSON 等的中间件设备。我们试图做的是使用 JSONP 请求来获取此信息,但是 的编排 returns JSON 没有包含在函数中 ,这就是我们的问题所在。
相反,我们将其更改为标准 JSON get 请求,然后导致 Access-Control-Allow-Origins 错误(好linkhere)。在这一点上,我们将 Access-Control-Allow-Origins 设置添加到 orchestration/server 端 - 然后我们能够以可用的方式恢复 JSON格式化成功。