gpt4 book ai didi

javascript - 无法显示到控制台接收到的 JSON

转载 作者:行者123 更新时间:2023-11-29 19:40:13 24 4
gpt4 key购买 nike

我正在尝试从远程服务器接收带有 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 请求,否则请将其删除。如果您这样做,那么这应该是一个字符串,而不是 bool 值。

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 header 。

然后使用:

$.ajax({
type:"GET",
url: "http://****.amazonaws.com:8080/?userlist=1",
dataType: "json",
success: function(data){console.log(data)}
});

关于javascript - 无法显示到控制台接收到的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23542185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com