Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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 get请求在5次调用后未得到响应_Javascript_Node.js_Ajax_Mongodb - Fatal编程技术网

Javascript Ajax get请求在5次调用后未得到响应

Javascript Ajax get请求在5次调用后未得到响应,javascript,node.js,ajax,mongodb,Javascript,Node.js,Ajax,Mongodb,我试图通过ajax get请求从mongodb服务器向前端获取一些信息。一切正常,只是如果我尝试调用5次javascript函数,我不会从本地服务器得到任何响应 为了调试nodejs函数,我尝试放置了一些console.log(),似乎在我第六次调用该函数时,nodejs函数甚至没有运行 javascript ajax前端代码: function addLike(music){ var request = new XMLHttpRequest(); request.op

我试图通过ajax get请求从mongodb服务器向前端获取一些信息。一切正常,只是如果我尝试调用5次javascript函数,我不会从本地服务器得到任何响应

为了调试nodejs函数,我尝试放置了一些console.log(),似乎在我第六次调用该函数时,nodejs函数甚至没有运行

javascript ajax前端代码:


function addLike(music){

     var request = new XMLHttpRequest();

     request.open('POST', '/AddLike', true);
     request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
     var myobj = {"music": music};
     request.send(JSON.stringify(myobj));

     setTimeout(function(){

        $.ajax({
          url: "/getAll",
          type: 'GET',
          dataType: 'json', // added data type
          success: function(res) {
            // => the 6th time i launch addLike(music), the function doesn't go there
             update(res);
          }
    });

     }, 200);

} 

nodejs函数:


app.get("/getAll", function(req, res){

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/";

    MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
        if (err) throw err;

        var dbo = db.db("SoundShare");

        var tab = dbo.collection('Musique');

        tab.find({}).toArray(function(err2, result) { 
            if (err2) throw err2;

            res.send(JSON.stringify(result));

            db.close();

        });
    });
});

如下图所示,在firefox的控制台中,最后一个get ajax请求没有收到任何响应

这似乎是一个服务器端的问题,但我不知道如何解决它


提前感谢您的回答。

您的问题是您正在/getAll函数中创建一个新连接,默认池大小为5,如图中所示


您应该在node.js应用程序启动时创建连接,并在整个应用程序中使用该连接,而不是在每个请求上创建新连接。

304表示该连接已缓存,因此请设置缓存头。。。。还要向Ajax调用添加一个错误处理程序,并记录它所说的内容。在post之后设置超时?如果您希望调用实际完成,这似乎不是一个好主意。是的,我知道我需要使第一个post调用异步,以便在post结束后调用get请求。那么我如何创建可以一直持续的连接?我有点困惑,因为我几周前才开始使用nodejs。也许我应该放置一个ajax侦听器在功能之外?我不熟悉您项目的结构,但一般来说,您应该在初始化应用程序和express等的同时创建连接,有很多教程介绍如何做到这一点,例如