Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Привет, я тут вызываю таблицу из бд mysql через ajax что бы при добавление ново и записью не обновить страницу,
данные с бд приходе но при добавление новои записи нужно обновить страницу.
Что не так?
Да тут проблема не в ajax, а вообще в знании браузерного javascript.
Здесь ajax вызывается в блоке $(document).ready(function() { ... }); Этот блок срабатывает, когда страница окончательно загрузится. Если нужно обновлять данные, не обновляя страницу, то нужно вызывать ajax по другому событию.
Недостаток: если сайт открыт в нескольких вкладках, то сервер загнётся от огромного количества запросов.
Решение проблемы: используя Visibility API, отправлять запрос только в том случае, если страница в зоне видимости пользователя. https://caniuse.com/#feat=pagevisibility
Недостаток: на шаред-хостингах и на некоторых VPS можно быстро исчерпать лимит открытых соединений. Поэтому опять же лучше закрывать соединение, если страница не в зоне видимости (см. замечание про Visibility API в предыдущем пункте).
3. Поместить на страницу «волшебную кнопку», по событию нажатия на которую свежие данные будут подтягиваться аяксом. Что-нибудь тупое вроде <button onclick="...">.
Здесь 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
Каждый запрос будет скачивать полную таблицу и добавлять её в конец. Если запрос повторять, таблица будет распухать до необъятных размеров.
Нужно либо затирать старую, либо запоминать последний принятый айдишник и скачивать не всё, а только новые данные: