簡體   English   中英

無法顯示到控制台接收到的JSON

[英]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生成一個名稱。 幾乎沒有任何理由要手動進行。

如果您確實要覆蓋名稱生成,則必須指定一個字符串或一個返回字符串的函數。 兩者都不是。

您尚未在任何地方指定要對響應執行的操作。 想必您將jsonpCallbacksuccess混淆了。


你需要做什么:

確定您使用的是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.

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