没有从ajax获得响应,进入错误功能

时间:2013-08-04 20:20:44

标签: javascript jquery ajax node.js

我第一次使用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”:'*'之后也会这样做。 enter image description here

1 个答案:

答案 0 :(得分:2)

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