簡體   English   中英

僅當用戶將在SQL PHP Codeigniter中添加行時才按Ajax

[英]Hit Ajax only when user will add row in sql PHP Codeigniter

我們不想一次又一次地擊中ajax,這會減慢POS其他過程的速度

因此,現在我們希望僅當用戶從前端站點輸入一些數據時才打ajax,例如我們在POS中有一個購物車,然后再次打ajax並再次減慢POS其他過程的速度

我們希望如果用戶從站點的前端添加食品,那么它將通過點擊ajax同時顯示在POS后端的POS中

但是我怎么知道添加的項目可以通過一次又一次地擊中ajax來完成,但是我不希望我只想在SQL數據庫中得到一些新結果時才擊中ajax。

jQuery的時間間隔不是很好的答案

還有其他想法嗎?

好吧,我認為您的答案是javascript(jquery庫,可能會使您的生活更輕松),並讓我解釋一下原因。

首先,ajax是連接前端和后端的“鏈”。 如您所知,php無法“看到” DOM,唯一的方法是使用forms ,為將在后端等中調用的元素命名,並在表單內部調用所需的php類。 這樣做的缺點是,一旦單擊,頁面就會刷新。

另一方面,我們有基於前端交互的javascript。 Javascript可以處理前端中的所有更改並處理其中的內容(例如焦點,點擊等的元素)。 個人觀點是,javascript是前端php的“眼睛”(當然,它甚至只是為了簡化)。

因此,既然我們說過了,那就讓我們談談您的問題。 根據我對您的代碼的理解,您只是在談論優化。 知道用戶是否在您提到的食品領域中添加了任何東西的唯一方法是,您是否可以“看到”該字段(javascript)。

我了解您不希望觸發ajax,而是調用查詢數據庫的php類。 這意味着您必須在前端甚至后端放置條件。

前端,您可以在用戶單擊字段時檢查您的字段(focus_lost):

$( "#food_field" ).blur(function() {
  //ajax call
}); 

另一個解決方案是添加一個類似於“ Submit”的button然后將您的jquery設置為在單擊時觸發ajax,例如:

$( "#Submit" ).click(function() {
  //ajax call
}); 

在后端,您可以只使用if條件。 我的意思是,您可以繼續觸發您的Ajax,但是您不必查詢數據庫。 例如,如果用戶發送的數據為空,則可以執行以下操作:

if($food_field<>''){
//query the db
}

這樣,只有在您感興趣的字段中獲得值時,才查詢數據庫。

您甚至可以計算發送的數據字母,例如:

    if(strlen($food)>6){
    //query the db
    }

結論是在后端和前端都有解決方案。 我個人的拙見是,如果您要照顧前端中的事物,則可以在前端“過濾”它們,因為您可以在此處更輕松地對其進行管理。

我認為您可能必須使用網絡套接字進行實時更新。 查看此http://socketo.me/ (或) https://socket.io/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM