Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 没有从ajax获得响应,进入错误函数_Javascript_Jquery_Ajax_Node.js - Fatal编程技术网

Javascript 没有从ajax获得响应,进入错误函数

Javascript 没有从ajax获得响应,进入错误函数,javascript,jquery,ajax,node.js,Javascript,Jquery,Ajax,Node.js,我第一次使用ajax和NodeJS。当我使用客户端从节点js获取响应时,它会进入error函数。另一方面,当我直接从浏览器调用url时,我从服务器得到正确的响应。这表明客户端ajax请求有问题 这是我的客户代码: function fetch() { $.ajax({ type: 'POST', url: "http://127.0.0.1:8888", data: {data : 'India'}, dataType: 'json', succe

我第一次使用ajax和NodeJS。当我使用客户端从节点js获取响应时,它会进入error函数。另一方面,当我直接从浏览器调用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");
    }

});
这是server node.js代码(它的一部分)。console.log消息获取正确的值

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”:“*”之后也会执行此操作。

这是最重要的。您需要通过HTTP提供承载JavaScript的HTML文档(并且,除非您正在使用,否则来自与您使用Ajax请求的资源相同的主机名和端口)。

您是否在浏览器控制台中获得输出?听起来像是一个跨域问题。@Dave:我看到这条消息(经过编辑的帖子),然后弹出警告消息。然后页面会自动重新加载。是的,这就是我链接到的问题。这是一个非常常见的问题,由应用的沙箱浏览器引起(一个域无法从另一个域获取详细信息,除非另一个域允许)。我不确定是否有任何权限允许它使用文件系统(null)脚本,因此您可能需要设置一个本地主机或在某个地方托管您的文件。我的可能副本包括在服务器中的这一行(response.writeHeader(“Access Control allow Origin”(“Access Control allow Origin”),“*”),并从文件移动到http,但是错误仍然存在,页面重新加载。令人惊讶的是,我在document.ready函数中添加了ajax,它成功了:)。非常感谢。