[英]Can't display to console received JSON
我正在嘗試從遠程服務器接收帶有JSON對象的大型數組。 基於Node.js + Redis的服務器端。 我的ajax查詢:
$.ajax({
crossDomain: true,
type:"GET",
contentType: "application/json",
url: "http://****.amazonaws.com:8080/?userlist=1",
dataType: "jsonp",
jsonp: false,
cache: true,
jsonpCallback: function(data){console.log(data)}
});
在“網絡”->“響應”選項卡上,我看到要接收的數組。 例:
[
{
"uid": 1,
"username": "jf",
"firstname": "Annunn",
"lastname": "Uv",
"photolink": "https://newsz.s3.amazonaws.com/users/male.jpg",
"bubblecolor": 7,
"chattscore": 125,
"city": "Regina",
"country": "CA",
"locale": "CA",
"refreshtime": 5
},
{
"uid": 2,
"username": "ypfoub",
"firstname": "Gljissash",
"lastname": "Braud",
"photolink": "https://newsz.s3.amazonaws.com/users/female.jpg",
"bubblecolor": 2,
"chattscore": 125,
"city": "Salt Lake City",
"country": "US",
"locale": "US",
"refreshtime": 5
}
]
但是我不能對這種反應做任何事情。 jsonpCallback函數返回未定義。 謝謝
在任何情況下,您對ajax調用的論點的一半都是沒有意義的,而在這種情況下,剩下的一半是沒有意義的。
crossDomain: true,
僅當您對重定向到不同來源的相同來源發出請求時,才應使用此選項。 不要那樣做
type:"GET",
這可以。
contentType: "application/json",
您正在發出GET請求。 請求中沒有內容。 不要指定內容類型。
url: "http://****.amazonaws.com:8080/?userlist=1",
這對於常規請求來說很好,但是如果您要使用JSONP,則應添加&callback=?
對此。
dataType: "jsonp",
您得到的響應不是JSONP。 為什么要告訴jQuery接受JSONP?
jsonp: false,
除非您使用非標准的回調名稱查詢字符串參數發出JSONP請求,否則請刪除此選項。 如果你這樣做,那么這應該是一個字符串,而不是一個布爾值。
cache: true,
這可以。
jsonpCallback: function(data){console.log(data)}
如果您使用的是JSONP,則讓jQuery生成一個名稱。 幾乎沒有任何理由要手動進行。
如果您確實要覆蓋名稱生成,則必須指定一個字符串或一個返回字符串的函數。 兩者都不是。
您尚未在任何地方指定要對響應執行的操作。 想必您將jsonpCallback
與success
混淆了。
你需要做什么:
確定您使用的是JSON還是JSONP。
如果您使用的是JSONP,則更改您向其發送請求的服務器端腳本,以使其返回JSONP響應。
然后使用:
$.ajax({
type:"GET",
url: "http://****.amazonaws.com:8080/?userlist=1&callback=?",
dataType: "jsonp",
success: function(data){console.log(data)}
});
如果您不使用JSONP,則(如果尚未使用)更改服務器端腳本,使其包含CORS標頭。
然后使用:
$.ajax({
type:"GET",
url: "http://****.amazonaws.com:8080/?userlist=1",
dataType: "json",
success: function(data){console.log(data)}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.