簡體   English   中英

未捕獲到的SyntaxError:意外的令牌:返回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");
})
;

該代碼返回以下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:

我不確定在這里我到底在做什么錯,或者為什么我收到此消息,所以不勝感激。

bengrah。

在jQuery文檔中,您可以找到以下內容:

“跨域json請求將轉換為jsonp除非請求的請求選項中包含jsonp: false 。”

因此,可能您正在進行跨域調用,並且將其轉換為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 /業務流程以獲取JSON等。 我們試圖做的是使用JSONP請求獲取此信息,但是業務流程返回的是未包裝在function中的 JSON,這就是我們的問題所在。

相反,我們將其更改為標准的JSON get請求,這隨后導致Access-Control-Allow-Origins錯誤此處是好的鏈接)。 此時,我們在業務流程/服務器端添加了Access-Control-Allow-Origins設置-然后我們能夠成功以可用格式返回JSON。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM