2017-08-17 37 views
1

我使用VueJS作爲我的應用程序的前端,Laravel作爲後端。用自由文本搜索減少對服務器的呼叫的最佳場所在哪裏?限制自由文本搜索

搜索輸入「你好」

@keyup將使5服務器請求

1st = h 
2nd = he 
3rd = hel 
4th = hell 
5th = hello 

理想情況下,我希望能夠停止服務器的請求,直到用戶停止打字,或推遲塑機按鍵。這樣我只會發送1或2個請求到服務器進行每次搜索。

+0

可能重複的(https://stackoverflow.com/questions/4220126/run-javascript-功能 - 當用戶完成時鍵入 - 而不是鍵 - 鍵) – Troyer

+0

在向服務器發送請求之前,您應該在VueJS中使用節流技術。它通常在vanilla JS中用'setTimeout'完成,你可以在網上找到很多資源。 – TheFallen

回答

3

每另一個按鍵時我解決這個問題是通過將請求超時的方式,以及復位超時。
這使得請求只在沒有按下特定時間的情況下完成。

function keyPressed() { 

    if (window.ajaxtimeout) 
     clearTimeout(window.ajaxtimeout); 

    window.ajaxtimeout = setTimeout(function() { 

     // Ajax request 

    }, 300); 

}; 

本示例將在發送ajax請求之前等待鍵擊之間的300毫秒。我發現這是一個很好的價值。

+0

使用此,它的完美 –

1

你有多個解決方案:

  • 使用setTimeOut()功能,一旦用戶按下一個按鈕,例如,他可以有300ms以內按下一個按鈕啓動服務器請求之前。
  • 啓動請求按[當用戶輸入完,而不是重點了運行JavaScript函數?]「輸入」