[英]Nodejs, express, Ajax: Function triggers only Six Times
使用nodejs表示我正在嘗試觸發一個包含簡單控制台日志的js函數。 可悲的是,該功能僅觸發6次並凍結了一段時間。 一兩分鍾后,所有的按鈕單擊都會立即觸發,在“凍結時間”內單擊該按鈕。 它總是在按下按鈕6次后發生。
index.html->按鈕
客戶端->觸發Ajax發布函數的jquery函數
server.js->包含express函數,該函數觸發控制台日志
的index.html
<input type="button" id="car" value="drive"/>
clientside.js
$('#car').click(function(){
$.ajax({
type:'POST',
url: url + '/drive'
});
});
server.js
var app = express();
app.post('/drive', function(req, res){
console.log('Car starts driving');
});
我究竟做錯了什么? 有什么技巧可以改善我的代碼嗎?
謝謝
您的服務器需要響應該請求。 嘗試將服務器更新為:
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后,瀏覽器將把其余請求排隊。
一段時間后看到它修復的原因是由於請求超時。 一旦請求超時(因為沒有收到響應),瀏覽器將關閉連接。
每個主機的瀏覽器並發請求限制-https: //stackoverflow.com/a/985704/4774345
您的服務器代碼應返回語句:
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
}
});
$('#car').click(function(){
$.ajax({
type:'POST',
async : true,
url: url + '/drive'
});
您需要異步發送它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.