gpt4 book ai didi

javascript - 对服务器返回的 json 对象的 Crossdomian ajax 请求显示错误 Unexpected token :

转载 作者:行者123 更新时间:2023-11-30 00:13:17 25 4
gpt4 key购买 nike

我正在运行一个快速服务器,我在其中检查对某些 url 请求的获取请求。现在在回复中我试图以 json 格式发送回复,以便我可以对页面进行 ajax 调用并获取数据。现在要进行跨域请求,我必须使用 jsonp。现在,当请求完成并且数据返回到回调时,它显示错误 Uncaught SyntaxError: Unexpected token :。以下是服务器和客户端代码

服务器

var express=require('express');
var app = express();
var http = require('http').Server(app);
var port=Number(3000);
var server_ip_address = '127.0.0.1';

http.listen(port,server_ip_address, function(){
console.log('listening on '+port);
});

app.get('/test', function (req, res) {
console.log(req.query);
res.send({message:'hello'});
});

客户端

$.ajax({
url: 'http://localhost:3000/test',
type: 'GET',
dataType:'jsonp',
crossDomain:true,
data: {
username: $('#username').val(),
password: $('#pwd').val()
},
success: function(result){
console.log($.parseJSON(result));
},
jsonp:'jsonp'
});

在我尝试使用的服务器代码中

res.setHeader('Content-Type', 'application/javascript');
res.send({message:'recieved'});

甚至

res.setHeader('Content-Type', 'application/json');
res.send({message:'recieved'});

在客户端中,我尝试按原样记录结果对象,但无济于事。任何帮助表示赞赏。此外,同样欢迎使用其他方法获取数据的任何建议。提前致谢。

最佳答案

最简单的方法是使用 res.jsonp() 而不是设置您自己的 header 等:

app.get('/test', function (req, res) {
console.log(req.query);
res.jsonp({message: 'hello'});
});

默认的回调参数只是 callback 但你可以改变它(如果你需要)像这样:

app.set('jsonp callback name', 'cb');

注意:您可能必须从客户端代码中删除 jsonp:'jsonp',因为它分配了回调的名称。如果您要提交数据(尤其是敏感数据),我还建议您将它从 GET 请求换成 POST 请求。

关于javascript - 对服务器返回的 json 对象的 Crossdomian ajax 请求显示错误 Unexpected token :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35622468/

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