Javascript Nodejs、express、Ajax:函数只触发六次

Javascript Nodejs、express、Ajax:函数只触发六次,javascript,jquery,node.js,ajax,Javascript,Jquery,Node.js,Ajax,使用nodejs和express,我试图触发一个包含简单控制台日志的js函数。遗憾的是,该函数只触发了6次,并冻结了一段时间。一两分钟后,所有在“冻结时间”中单击的按钮都会立即触发。它总是在按下按钮6次后发生 index.html->按钮 客户端->触发Ajax post函数的jquery函数 server.js->包含触发控制台日志的express函数 index.html <input type="button" id="car" value="drive"/> server.

使用nodejs和express,我试图触发一个包含简单控制台日志的js函数。遗憾的是,该函数只触发了6次,并冻结了一段时间。一两分钟后,所有在“冻结时间”中单击的按钮都会立即触发。它总是在按下按钮6次后发生

index.html->按钮
客户端->触发Ajax post函数的jquery函数
server.js->包含触发控制台日志的express函数

index.html

<input type="button" id="car" value="drive"/>
server.js

var app = express();

app.post('/drive', function(req, res){

   console.log('Car starts driving');

});
我做错了什么?有什么建议可以改进我的代码吗

多谢各位

$('#car').click(function(){

   $.ajax({
      type:'POST',
      async : true,
      url: url + '/drive'
   });

您需要异步发送。您的服务器需要响应请求。尝试将服务器更新为:

var app = express();

app.post('/drive', function(req, res){

   console.log('Car starts driving');
   res.sendStatus(200)

});
这将向所有请求返回200 OK

为什么在6次请求之后会发生这种情况?我猜你在使用Chrome或Firefox。Chrome和Firefox最多只允许向单个服务器并发6个请求。当您达到6时,浏览器将对剩余的请求进行排队

您看到它在一段时间后自行修复的原因是由于请求超时。请求超时后(因为未收到响应),浏览器将关闭连接


每个主机的浏览器并发请求限制-

您的服务器代码应返回以下语句:

app.post('/drive', function(req, res){
   console.log('Car starts driving');
   res.sendStatus(sendStatus)
});

良好做法是在单击后禁用按钮,然后在响应返回后启用:

//禁用按钮

$.ajax({
    url: url + '/drive'        
    type: 'POST',        
    data: {},
    success: function(data){
        //Enable button
    },
    error: function(data){
        //Enable button
    }
});

这可能是因为服务器没有响应。你有没有可能在Chrome上测试这个?Chrome将允许对主机名进行6次并发请求。所以在6点之后,浏览器会阻止你提出更多的请求。在server.js文件中,尝试在
console.log(…)
行之后调用
res.send(200)
。在server.js模块中,确保返回。例如clientside.js中的res.send(“Car started driving”),好的做法是在单击按钮后禁用该按钮,然后在Ajax调用中重新启用它成功或失败伟大的回答和解释!不知道chrome在6点停止了所有传出的请求。这就解决了这个问题。非常感谢。要明确一点:Chrome只允许6个并发请求,但在我的服务器响应之后,这个数字又降到了0,对吗?@preprocessor是的。每次服务器响应请求时,浏览器都会关闭与服务器的连接。@JonLuca谢谢!:)这里有一个很好的答案,它概括了每个浏览器的不同限制-
$.ajax({
    url: url + '/drive'        
    type: 'POST',        
    data: {},
    success: function(data){
        //Enable button
    },
    error: function(data){
        //Enable button
    }
});