我第一次使用 ajax 和 node js。当我使用客户端从节点 js 获取响应时,它会进入错误函数。另一方面,当我直接从浏览器调用 url 时,我会从服务器得到正确的响应。这表明客户端 ajax 请求有问题。
这是我的客户代码:
function fetch() {
$.ajax({
type: 'POST',
url: "http://127.0.0.1:8888",
data: {data : 'India'},
dataType: 'json',
success: function () {
alert("hi");
//var ret = jQuery.parseJSON(data);
//$('#q').html(ret.msg);
},
error: function (jqXHR, textStatus, error) {
console.log('Error: ' + error.message);
alert("ERROR");
}
});
这是服务器 node.js 代码(它的一部分)。console.log msg 得到正确的值。
http.createServer(function(req, response) {
console.log("Request received");
response.writeHeader(200, {"Content-Type": "application/json"});
req.on('data', function (chunk) {
console.log(chunk.toString('utf8'));
console.log(result[0].name);
});
response.end(JSON.stringify({data:result}));
}).listen(8888);
服务器中的所有 console.log 都获得了正确的值。这意味着当有 ajax 请求时响应没有返回,但是在直接写入 127.0.0.1:8888 时,我得到了正确的响应。
控制台上的消息是:
XMLHttpRequest cannot load http://127.0.0.1:8888/. Origin null is not allowed by Access-Control-Allow-Origin.
请有人帮助解决这个问题。我已经做了一天了。
编辑:网络选项卡的屏幕截图。如您所见,服务器收到请求,但客户端没有收到响应。即使在写入“Access-Control-Allow-Origin”:“*”之后也会这样做。