我第一次使用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”:'*'之后也会这样做。
答案 0 :(得分:2)
这是Same Origin Policy。您需要通过HTTP提供托管JavaScript的HTML文档(除非您使用CORS,否则请使用与您使用Ajax请求的资源相同的主机名和端口)。