1

我第一次使用 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”:“*”之后也会这样做。 在此处输入图像描述

4

1 回答 1

2

这是同源策略。您需要通过 HTTP 提供托管 JavaScript 的 HTML 文档(并且,除非您使用CORS,否则来自与您使用 Ajax 请求的资源相同的主机名和端口)。

于 2013-08-04T20:33:38.880 回答