gpt4 book ai didi

javascript - jquery ajax 响应中缺少 responseJSON

转载 作者:行者123 更新时间:2023-11-29 21:35:21 29 4
gpt4 key购买 nike

我正在开发一个小型网络框架来运行 HCI 研究并遇到以下问题:

我有一个运行 express 的 Node 服务器,用于从 JSON 文件为我的本地主机数据提供服务。不是最好的数据库,但由于它是一个单用户系统(任何时候只有一个参与者会使用该系统),因此添加任何其他技术确实没有意义。以下 Get 请求代码工作正常:

function getUser(id,last) {
return $.ajax({
type: "GET",
url: "/data/user/"+id,
async: false
}).responseJSON;
}

由以下 Node 代码处理:

app.get('/data/:asset/:id', function (req, res) {
var accJSN
res.setHeader('Content-Type', 'application/json');

if(req.params.asset === "user")
{
accJSN = JSON.parse(fs.readFileSync(path.join(__dirname,'/public/data/users.json')));

res.send(JSON.stringify(accJSN.users[req.params.id]));
}

上面的代码产生了一个我可以使用/打印的响应,它包含 responseJSON 属性。下面的代码没有,我会注意到 Node 代码在同一个 server.js 文件中,而带有 jquery/ajax 调用的函数在我的客户端页面中:

客户端代码:

function getUserset(ids,last) {
userQuery = "";

for(i=0;i<ids.length;i++)
{
userQuery += ids[i] + ",";
}
userQuery = userQuery.slice(0,-1);

return $.ajax({
type: "GET",
url: "/userset?users=["+userQuery+"]",
async: false
}).responseJSON;
}

服务器代码:

app.get('/userset', function (req, res) {

var accJSN = JSON.parse(fs.readFileSync(path.join(__dirname,'/public/data/users.json')));
accJSN = accJSN.users;

var users = JSON.parse(req.query.users);

var resJSN = new Array;

for(var i=0;i<users.length;i++)
{
var temp = {};
temp["id"] = users[i];
temp["fName"] = accJSN[users[i]].fName;
temp["lName"] = accJSN[users[i]].lName;
temp["profilePic"] = accJSN[users[i]].profilePic;
resJSN.push(temp);
}
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(resJSN));
})

我需要的数据实际上在响应文本中可用,但我终究无法弄清楚为什么第二个示例不也包含 responseJSON 属性,或者,如果我完全错了,为什么第一个做。任何想法或解决方案表示赞赏,谢谢!

最佳答案

无需手动设置 application/json header 并发送 response 只需使用

res.json(resJSN);

代替

res.setHeader('Content-Type', 'application/json'); 
res.send(JSON.stringify(resJSN));

关于javascript - jquery ajax 响应中缺少 responseJSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35002655/

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