- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 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
homo 22.05.2019 11:30 # 0
gost 22.05.2019 11:39 # 0
Rooster 22.05.2019 16:28 # +2
Orange_Ikarus 23.05.2019 00:51 # +1
PEKYPCuBHblu__nemyx 22.05.2019 12:42 # +1
guest8 22.05.2019 14:40 # −999
Orange_Ikarus 22.05.2019 17:55 # +1
Здесь ajax вызывается в блоке $(document).ready(function() { ... }); Этот блок срабатывает, когда страница окончательно загрузится. Если нужно обновлять данные, не обновляя страницу, то нужно вызывать ajax по другому событию.
Orange_Ikarus 22.05.2019 19:51 # +1
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="...">.
bormand 22.05.2019 20:08 # +2
Orange_Ikarus 22.05.2019 20:09 # +1
Orange_Ikarus 23.05.2019 11:29 # +1
arts 27.05.2019 10:49 # 0
com1 23.05.2019 02:12 # +1
Rooster 23.05.2019 04:03 # +1
TOPT 23.05.2019 06:48 # +1
Rooster 23.05.2019 07:32 # +1
Steve_Brown 23.05.2019 11:10 # +1
Rooster 23.05.2019 08:29 # +1
Orange_Ikarus 23.05.2019 11:41 # +2
>> $('#tab2').append(response)
>> SELECT * FROM ws_purchase
Каждый запрос будет скачивать полную таблицу и добавлять её в конец. Если запрос повторять, таблица будет распухать до необъятных размеров.
Нужно либо затирать старую, либо запоминать последний принятый айдишник и скачивать не всё, а только новые данные:
guest8 23.05.2019 11:52 # −999
Orange_Ikarus 23.05.2019 12:34 # +1
arts 23.05.2019 13:19 # +1
homo 23.05.2019 15:49 # +1
Xander_Bass 07.01.2020 00:18 # 0