За последние 24 часа нас посетили 20205 программистов и 1183 робота. Сейчас ищет 671 программист ...

вернуть ответ после выполнения скрипта

Тема в разделе "JavaScript и AJAX", создана пользователем l_2001, 5 апр 2024.

  1. l_2001

    l_2001 Активный пользователь

    С нами с:
    9 дек 2014
    Сообщения:
    66
    Симпатии:
    2
    здравствуйте! есть такой скрипт
    Код (Javascript):
    1. <script type="text/javascript">
    2.             // unblock when ajax activity stops
    3.             $(document).ajaxStop($.unblockUI);
    4.             function test1() {
    5.                 $.ajax({ url: 'DelClientsAndGroup.php', cache: false });
    6.             }
    7.             function test2() {
    8.                 $.ajax({ url: 'AddClientsAndGroup.php', cache: false });
    9.             }
    10.             $(document).ready(function() {
    11.                 $('#pageDemo1').click(function() {
    12.                     $.blockUI({overlayCSS: { backgroundColor: 'orangered' }}, { message: '<h1><img src="css/busy.gif" /> Ждите, удаляются старые данные...</h1>'});
    13.                     test1();
    14.                 });
    15.                 $('#pageDemo2').click(function() {
    16.                     $.blockUI({overlayCSS: { backgroundColor: 'skyblue' }}, { message: '<h1><img src="css/busy.gif" /> Ждите, обрабатываются данные файла...</h1>'});
    17.                     test2();
    18.                 });
    19.             });
    20.         </script>
    но не всегда выполняемый php скрипт заканчивается удачей... есть ещё скрипт вот такой
    Код (Javascript):
    1. $(document).ready(function() {
    2.     $('#demo8').click(function() {
    3.         $.blockUI();
    4.         setTimeout(function() {
    5.             $.unblockUI({
    6.                 onUnblock: function(){ alert('onUnblock'); }
    7.             });
    8.         }, 2000);
    9.     });
    10. });
    и вот вопрос - а можно-ли в onUnblock: function(){ alert('onUnblock'); } вывести результат работы скрипта php?
    заранее спасибо за помощь!
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.768
    Симпатии:
    1.322
    Адрес:
    Лень
    Остановимся на этом:
    Почему ?
     
  3. l_2001

    l_2001 Активный пользователь

    С нами с:
    9 дек 2014
    Сообщения:
    66
    Симпатии:
    2
    понимаете, бывает select на сервере отрабатывает дольше, чем позволено таймаутом... в результате скрипт выдаёт 404 ошибку... а юзер этого не видит и не понимает отработало или нет... я костылики написал, но не очень комильфо...
     
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    874
    Симпатии:
    138
    404-ая не по таймауту выдаётся, не надо гнать, попробуй EXPLAIN SELECT сделать и, возможно, индексов навесить правильных, особенно если в таблицу редко данные добавляются и часто считываются.
     
  5. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    270
    Симпатии:
    52
    Адрес:
    Бавария, Германия
    Добрый день!
    Результат работы PHP скрипта можно вывести в test1 и test2 добавив success в $.ajax
    М.б. стоит две одинаковые функции test1 и test2 заменить на одну?
    Удачи!
     
  6. l_2001

    l_2001 Активный пользователь

    С нами с:
    9 дек 2014
    Сообщения:
    66
    Симпатии:
    2
    с мускулем у меня проблем нет, но основная выборка идёт из sybase ase, вот на нём проблемы...
    --- Добавлено ---
    так там два разных скрипта... я пробовал объединить, но вызывается только один... я не спец в java script, просто нагуглил первое, что попалось... там от юзеров требовалось, чтобы видеть не "крутилку" в закладке, а чтобы страница блокировалась на время выполнения скрипта! я это сделал, код вверху, но, если ошибка отработки, то юзер этого не видит... вот и задал вопрос... по идее, самое лучшее было бы, отправка данных в скрипт, блокировка страницы, если ОК, то ОК, если не отработал, то вывод ERROR... как-то так...
     
  7. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    270
    Симпатии:
    52
    Адрес:
    Бавария, Германия
    Главное это выполнение скрипта, а не блокировка страницы. У Вас отправляется пустой AJAX Request на url DelClientsAndGroup.php,
    а должны отправляться данные, которые на сервере должен обработать это PHP-скрипт и вернуть Response назад в JS.
    Вы предполагаете, что у Вас "тормозят" MySql запросы. Неудивительно.
    Поскольку Вы можете только выбирать все данные из одной или нескольких таблиц и отправлять JSON-Response.
     
  8. l_2001

    l_2001 Активный пользователь

    С нами с:
    9 дек 2014
    Сообщения:
    66
    Симпатии:
    2
    я не ожидал, что запрос будет тормозить (хоть и иногда) потому взял простой скрипт блокировки страницы, без каких-то контролей! принцип - работает - блокирует, отработал - разблокировал! но, как оказалось, не всегда отработка успешна... в общем я понял - буду переписывать скрипт... запустил - отрабатывает, отработало - проверяет, если что-то пошло не так - выводит юзеру на экран! всем спасибо! гугл опять рулит!
     
  9. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    270
    Симпатии:
    52
    Адрес:
    Бавария, Германия
    На прощание хочу Вам посоветовать прогуглить ajax.
    Обратите внимание на параметры data, type, success и error.
    Бывает, ждёшь response, а в нём возаращается html-текст с фатальной ошибкой в PHP.
    Рекомендую Вам вставить в callback-функциях console.log
    Код (Javascript):
    1. $.ajax({
    2. type: ... ,
    3. url: "DelClientsAndGroup.php",
    4. data: ... ,
    5. success: function(response){
    6.      console.log(response);
    7.      ...
    8. },
    9. error: function(request,error) {  
    10.      console.log(request, error);
    11. }
    12. });
    Удачи!
     
  10. l_2001

    l_2001 Активный пользователь

    С нами с:
    9 дек 2014
    Сообщения:
    66
    Симпатии:
    2
    я в начале юзал именно так, но скрипт выполняется в "тишине" и юзеры возжелали, чтобы процесс хотя-бы блокировал страничку и визуально было видно, что там что-то работает вообще... потому и воспользовался blockUI... в общем - попробую склеить ajax и blockUI, жаль знаний маловато... но ничего, попробую! всем большое спасибо за помощь!