"PHP" / Говнокод #25631 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 arts, (Updated )

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

  • Бригада мученников Аяксы
    Ответить
  • Да тут проблема не в 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']}
    ");
    Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8