2017-08-17 69 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函数?]“输入”