[英]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.