Nodejs页面在向Custom API提出多重请求后会冻结

我遇到的问题是我的应用程序工作,当我提交只有一个1,当我按下多次冻结提交button,一段时间后(大约1000.000毫秒),它返回控制台和玉页的最后一个请求。 提交button从表单中返回一个post,并将其发送到同一页面。 button也是刷新页面。 页面返回(JSON)post到页面是非常重要的,还有一个其他的json请求将它发送到API(并将其返回到同一页面)

app.js

var options_search = { hostname: 'host', path: 'path', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': JSON request .length, } }; app.post('/result',function(req,response){ var keyword=req.body.user; GLOBAL.objToJson ={ keyword }; response.write(JSON.stringify(GLOBAL.objToJson)); console.log("test " +JSON.stringify(GLOBAL.objToJson) ); }); app.get('/Search', function(req, res) { var req = http.request(options_search, (resb) => { var buffer_search = ""; resb.setEncoding('utf8'); resb.on('data', (chunks) => { buffer_search += chunks; }); resb.on('end', () => { res.render('Search',{ title: 'Search', value_search: buffer_search, search_test: [JSON.stringify(GLOBAL.objToJson) ] }); }); }); //res.redirect("/search"); req.write(search); }); 

search.jade

 doctype html html head script(src='//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js') script. $(document).ready(function(){ var user,pass; $("#submit").click(function(){ user=$("#user").val(); pass=$("#password").val(); $.post("http://localhost:3000/result",{user: user}, function(data){ if(data==='done') { alert("login success"); } }); }); }); input#user(type='TEXT', size='40') br input#submit(type='button', value='Submit',onclick="location.href='search'") 

result路由中,您使用底层的HTTP .write()方法来响应客户端。 但是,这并不会结束连接,这将保持开放,期望更多的东西被写入客户端。

如果你发送一个string,你应该使用.send()因为它会把string写入HTTPstream并结束响应。

您可能还想考虑不将对象串.json() JSONstring,而只是使用.json() 。 所以这行代码

 response.write(JSON.stringify(GLOBAL.objToJson)); 

 response.json(GLOBAL.objToJson);