Jump to content
  • Sign Up
  • 0

Без вызова Alert("текст") не применяется значение.


Delphin911

Question

Сразу скажу за основу брал чужой код. Есть основная страничка страничка. На ней меню, по нажатию на ссылки в котором открываются другие странички.

Так вот по открытию одной из них считываются имена файлов, расположенных на устройстве. Они и считываются.

   function GetList(submit) {
            var server = "/list?dir=/";
        send_request(submit, server);
        alert("блаблабла");
        alert('2' + submit.value);
    }
  
function send_request(submit,server){
    var request = new XMLHttpRequest();
    request.open("GET", server, true);
    request.send();
    save_status(submit,request);
    //alert('1' + submit.value);
   }
   
   function save_status(submit,request){
    var new_submit;
    var old_submit = submit.value;
    request.onreadystatechange = function() {
     if (request.readyState != 4) return;
     submit.value = request.responseText;
     new_submit = request.responseText;
     setTimeout(function(){
      submit.value=old_submit;
      submit_disabled(false);
     }, 1000);
    }
    submit.value = 'Подождите...';
    submit.value = new_submit;
    submit_disabled(true);
}
   
   function submit_disabled(request){
    var inputs = document.getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++) {
     if (inputs[i].type === 'submit') {inputs[i].disabled = request;}
    }
   }

Первая функция отправляет запрос на устройство. Устройство считывает список файлов и возвращает в виде массива типа

[{"type":"dir","name":"first"},{"type":"file","name":"second"}]

Но вот если в первой функции убрать всплывающее окошко по алерту с блаблабла, то alert('2' + submit.value); выдает "2undefined". Можно конечно вместо блаблабла написать вумную фразу, типа "Данные собираются". Но как-то это неправильно. Подскажите, что сделать, чтобы без этого окна применялось значение. Я всю голову сломал. Тут что-то с последовательностью действий. Например вот если я вставлю в какую нибудь функцию send_request тоже какой-нибудь алерт, то алерт из первой функции выскакивает первый! В других языках программирования тот алерт, что в вызываемой йункции первым бы отработал. А тут такая фигня. Не могу понять этого!

Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Async + await. 

Нужно ждать, когда request обработается, а только потом что-то делать с value. Какая-то микросекунда буксует.

Также state для submit не хорошие.

Edited by Full-R
Link to post
Share on other sites
  • 0
6 часов назад, Delphin911 сказал:

Это я понял. А что делать то?

Не хочу ваш устаревший XHR переделывать. Вот тут посмотрите: Не срабатывает цикл for - ECMAScript - Учим делать сайты. HTML форум. (htmlforum.io).

Alert не делайте. Есть console.log и promt. 

Link to post
Share on other sites
  • 0

console.log не помогает. Попробовал сейчас после вашего совета. Оно даже в консоль не выводится.

function SaveConfig(submit) {
        var server = "/saveSettings?ssid=" + val('ssid') + "&password=" + encodeURIComponent(val('password')) + "&passwordAP=" + encodeURIComponent(val('passwordAP')) + "&ssidAP=" + val('ssidAP') + "&SSDP=" + val('SSDP') + "&IPAP=" + val('IPAP');
    send_request(submit,server);
    console.log("Изменения сохранены.");
        location.reload();
}

Вот у меня вместо console.log был alert и все срабатывало. А тут видно перезагрузка срабатывает раньше и не дает сохраниться и в лог консоли отправить.

Link to post
Share on other sites
  • 0

К стати если на компе во всех броузерах работает, то на смартфоне почему-то эта динамически строящаяся таблица не отрисовывается! В чем может быть дело?

Продолжаю бороться с задержкой при выводе результата и начинаю думать, что дело не в ней. Вот что написал почитав просторы инета:

unction GetList(submit) {
                var fl;
                var server = "/list?dir=/";
                send_request(submit, server);
                //alert("Считываем список файлов...");
                //fl = submit.value;
                //if (fl.length) {return fl;}
                //else {console.log("wait...");setTimeout(GetList, 500);}
                sleep(5000);
                return submit.value;
            }

            function sleep(milliseconds) {
                const date = Date.now();
                let currentDate = null;
                do {
                    currentDate = Date.now();
                } while (currentDate - date < milliseconds);
            }

Да, реально проходит 5 секунд ожидания, но на выходе пусто. Вот там еще закомментированные строки, тоже не работают. Толко alert спасает ситуацию.

Ну и к стати мне кажется, что на смартфоне и alert не помогает. Пустая страница.

Link to post
Share on other sites
  • 0

почитайте https://learn.javascript.ru/xmlhttprequest
там есть примеры которые вам должны помочь

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Комментарии

    • IntersectHost
      Весеннее обострение! Здравствуйте! Весна добралась уже до каждого уголка, где Intersect.Host предоставляет свои услуги. В каждой стране (а у Intersect.Host сервера располагаются в 7 странах) люди уже радуются теплому весеннему солнцу, последний снег уже сходит и природа просыпается. Мы предлагаем скидку равноценно средней температуре за неделю в каждом городе, где расположены наши серверы. Таким образом: VPS/VDS Россия -8% на все сервера, на продление и покупку. VPS/VDS Молдавия -12% на все сервера, на продление и покупку. VPS/VDS Нидерланды -7% на все сервера, на продление и покупку. VPS/VDS Латвия -6% на все сервера, на продление и покупку. VPS/VDS Украина -11% на все сервера, на продление и покупку. VPS/VDS Гонконг -21% на все сервера, на продление и покупку. VPS/VDS США -13% на все сервера, на продление и покупку. Используйте промокод "LoveSpring" и пользуйтесь скидкой на сервера. Акция актуальна до 11.04.2021  Наши контакты: Сайт - https://intersect.host/ Телеграм - @IntersectHost Тикет - https://bill.intersect.host/billmgr  
    • Proxy-White
      Соскучились ? :) Хотим поделиться с вами радостными новостями и предложить вам интересный купон :) В ближайшее время, по вашим просьбам, мы добавим услугу Мобильные прокси, сейчас мы ищем 50 тестировщиков, которые после тестирования, получат 50% скидку на услугу Мобильные прокси. А пока, можете воспользоваться вкуснейшим промо-кодом на 20% для всех текущих услуг Промо-код WOW действует до 12 апреля, успей приобрести наши услуги намного дешевле. Наш сайт https://proxywhite.com
    • dewqqland
      Https://dropmefiles.com/sYyOA Вот ссылка на проект. Создайте папку "img" и в ней папку "jac" и закиньте туда фотки, файл-обменик их зачем то удалил. В общем по фотке видно всё нормально, но я смог сделать, чтобы либо работала "система следующей фотки", либо "система по нажатию снизу фоток". Совместно оно не работает. Помогите пожалуйста, замучился уже 5 день мучаюсь. Проблема чисто в скрипте JS. Желательно сделать рабочую систему на 1-ой JS, 2-я жс немного как по мне не удобна.
    • Tucha
      Перенос коробки Битрикс24 в облако для клиента Друзья, работаете с коробочной версией Битрикс24 или планируете внедрить её в работу? Разместите CRM в надёжных облаках от Tucha — рекомендованного хостинг-партнёра Битрикс24. Наши виртуальные серверы имеют специальное окружение Bitrix Environment для продуктивной работы коробки и соответствуют всем требованиям её разработчика. На примере реального проекта рассказываем, как происходит процесс переноса CRM на сервер и сколько стоит такое решение: https://tucha.ua/ru/solutions/perenos-korobki-bitriks24-v-oblako-dlya-klienta-realnyy-primer. А для лёгкого старта работы в облаке с популярной редакцией «Корпоративный портал 50» дарим специальные условия! При заказе акционных конфигураций VPS до 03.05.2021 включительно вы получите: 1.    Скидку 10 евро* на оплату первого счёта. 2.    Услугу по подключению локального принтера к виртуальному серверу от службы технической поддержки Tucha в подарок. Чтобы воспользоваться предложением, звоните +380 44 583-5-583 или пишите нам по адресу [email protected] и укажите промокод TD-232-0. Не упустите возможность перенести коробку Битрикс24 в облака с приятными бонусами! *В гривнах на первое число текущего месяца.
    • ALTVPN
      Друзья у нас радостная новость Для услуги VPN https://altvpn.com/ru/vpn/ Мы разработали приложения для Windows, Android, Mac OS, IOS (IOS пока не пропустили в App Store) Приложения находится в стадии тестирования, поэтому на сайте мы их еще не опубликовали, но уже можно его попробовать, написав нам в службу поддержки https://altvpn.com/ru/support/ или связаться с консультантом (поддержка 24/7) Но это еще не все, многие просят чтобы мы добавили услугу Мобильные прокси, поэтому по многочисленным просьбам мы уже работаем над этим и ищем тестировщиков, оставьте свою почту нашему оператору или свяжитесь с нами https://altvpn.com/ru/support/ при появлении услуги на сайте, вы автоматически получите промо-код на 40% для покупки. Для всех верных и постоянных клиентов у нас скидки в размере 25% на все услуги, кроме пакетных прокси-серверов. Промо-код MOBILE предоставит вам скидку в размере 25% осталось только ввести его и купить. Акция действует до 15 апреля, успейте купить по вкусным ценам.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.