javascript - 未捕获的语法错误 : Unexpected token : when returning JSON

标签 javascript jquery json endpoint

我有一些 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/

相关文章:

php - 数组到 JSON 编码带有希伯来字符的奇怪行为

javascript - Handsontable 存在问题 - 单行包含只读单元格

Microsoft Dynamics CRM 2013 的 Javascript 兼容性错误

javascript - Spring stomp websockets with vue.js

jquery-sortable - 限制嵌套级别

javascript - CSS3 关键帧动画不透明度中断 z-index 顺序

javascript - 添加监听器以跨越内容更改

arrays - 使用PowerShell条件解析JSON文件的数组对象

python - 无法访问 JSON 输出中的 key : string indices must be integers

javascript - 未捕获的语法错误 : Unexpected token (First program)