1. PHP / Говнокод #25631

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    <table class="table  table-hover" id="tab2">
    							<tr>
    								<th>Штрихкод </th>
    								<th>Имя покупателя</th>
    								<th>Штук</th>
    							</tr>					
    					
    					</table>
    
    Код ajax
    					<script>
    			$(document).ready(function() { 
    
    				$.ajax({
    					type: "POST",
    					url: 'ajax.php',
    					data : 'task=tab2',
    					dataType: "html",
    					success: function(response) {
    						$('#tab2').append(response)
    
    					}
    
    				});
    			});
    
    	</script>
    		
    file/ajax.php
    * вызов списка клиентов ws_purchase*/
    		if ($ar_clean['task'] === "tab2") { echo "string";
    				$getServices = mysqli_query($db,"
    									 SELECT  *` 
    									 FROM ws_purchase  ");
    					
    								 while($Service = mysqli_fetch_assoc($getServices)) {
    								?>
    								<tr >
    									<td><?=$Service['id_purchase'] ?></td>
    									<td><?=$Service['other_barcode'] ?></td>
    									<td><?=$Service['username'] ?></td>								
    	   							</tr>
    	   						<?}			 
    			}

    Привет, я тут вызываю таблицу из бд mysql через ajax что бы при добавление ново и записью не обновить страницу,
    данные с бд приходе но при добавление новои записи нужно обновить страницу.
    Что не так?

    *Я не сселён в ajax

    Запостил: arts, 22 Мая 2019

    Комментарии (23) RSS

    • Что с тобой произошло в ajax?
      Ответить
    • Хуякс, хуякс и ты в ajax!
      Ответить
    • Бригада мученников Аяксы
      Ответить
    • Да тут проблема не в ajax, а вообще в знании браузерного javascript.

      Здесь ajax вызывается в блоке $(document).ready(function() { ... }); Этот блок срабатывает, когда страница окончательно загрузится. Если нужно обновлять данные, не обновляя страницу, то нужно вызывать ajax по другому событию.
      Ответить
      • Ладно, забегая вперёд, скажу, что можно сделать, чтобы данные обновлялись автоматически:

        1. Обновлять по таймеру (setInterval):
        https://learn.javascript.ru/settimeout-setinterval

        Недостаток: если сайт открыт в нескольких вкладках, то сервер загнётся от огромного количества запросов.

        Решение проблемы: используя Visibility API, отправлять запрос только в том случае, если страница в зоне видимости пользователя.
        https://caniuse.com/#feat=pagevisibility

        Не поддерживается в старых браузерах, поэтому ещё придётся проверять, можем ли мы этим API воспользоваться:
        https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API

        2. Вместо тёти Аси аякса держать постоянное соединение с сервером через websockets и ждать, когда сервер пришлёт новые данные (Comet):
        https://ru.wikipedia.org/wiki/Comet_(программирование)

        Недостаток: на шаред-хостингах и на некоторых VPS можно быстро исчерпать лимит открытых соединений. Поэтому опять же лучше закрывать соединение, если страница не в зоне видимости (см. замечание про Visibility API в предыдущем пункте).

        3. Поместить на страницу «волшебную кнопку», по событию нажатия на которую свежие данные будут подтягиваться аяксом. Что-нибудь тупое вроде <button onclick="...">.
        Ответить
    • ДНК не сложилось.
      Ответить
    • Ещё вот это напрягает:
      >> $('#tab2').append(response)
      >> SELECT * FROM ws_purchase

      Каждый запрос будет скачивать полную таблицу и добавлять её в конец. Если запрос повторять, таблица будет распухать до необъятных размеров.

      Нужно либо затирать старую, либо запоминать последний принятый айдишник и скачивать не всё, а только новые данные:
      $getServices = mysqli_query($db,"
          SELECT  *
          FROM ws_purchase
          WHERE id > {$_GET['lastid']}
      ");
      Ответить

    Добавить комментарий