Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2014, 00:46   #1
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию Показать результат CGI

Здравствуйте.
Есть сервер которому с формы отправляется скрипт CGI. после обработки сервер возвращает строку Success. После этого необходимо отправить запрос на получение новых данных через аякс.
Так вот вопрос: Как можно отследить на форме ответ то сервера с этой строкой? можно использовать только самый простой джаваскрипт без доп. фреймворков.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 07.11.2014, 07:40   #2
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Что-то я не понял как там у вас отправляется форма...

Делайте отправку данных с формы аяксом, когда придёт ответ от сервера - делайте ещё один аякс.
^-.-^ My GitHub
Fenex вне форума Ответить с цитированием
Старый 07.11.2014, 09:50   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ничего не понял, но если вы хотите отправить запрос Javascript'ом, то AJAX и без всяких jQuery легко делается.
http://youmightnotneedjquery.com/#post
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 07.11.2014, 13:16   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Fenex Посмотреть сообщение
Делайте отправку данных с формы аяксом, когда придёт ответ от сервера - делайте ещё один аякс.
Как получить ответ от сервера то??


Вот есть комбобокс на форме:
Код:
<div><label>Номер линии:</label>
<select id="selectBoxId" name="line_num" onchange="changeload();">
</select></div>
Событие при смене текущего элемента:
Код:
function changeload()
{
var objElement = document.getElementById("selectBoxId");
newAJAXCommand('/protect/lnsel.cgi?linesel='+objElement.selectedIndex);
newAJAXCommand('/protect/linesstat.xml', updateStatus, false)
}
Вот сам файл цги:
Код:
Success! ~lnsel(0)~
Вот проблема в том что если аякс запросы выполняются как указано в функции подряд. То сервер не успевает отработать смену активной ячейки и выдает данные предыдущей ячейки.

Хотелось бы вначале выполнить запрос с cgi, затем получив ответ выполнить запрос xml.
Вот это как сделать на форме через скрипт?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 07.11.2014, 17:44   #5
Fenex
Форумчанин
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
По умолчанию

Это асинхронность, решение простое: использовать коллбеки.

Код:
<script src="http://microajax.googlecode.com/svn/trunk/microajax.js"></script>
<script>
var url1 = "http://example.com/1";
var url2 = "http://example.com/2";

function changeload() {
    new microAjax(url1, function(response) {
        console.log(response);
        new microAjax(url2, function(response) {
            console.log(response);
        });
    });
}
</script>
^-.-^ My GitHub

Последний раз редактировалось Fenex; 07.11.2014 в 17:46.
Fenex вне форума Ответить с цитированием
Старый 07.11.2014, 18:34   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
использовать коллбеки.
О! Я тоже так делаю. Только у меня рекурсия. Что-то типа?
Код:
function changeload(i) {
    new microAjax(url[i], function(response) {
        console.log(response);
        changeload(i+1));
    });
}
Мне как-то больше так удобнее.
НУ а в масиве url[] соответственно обрабатываемые ячейки таблицы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2014, 20:05   #7
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Fenex Посмотреть сообщение
Это асинхронность, решение простое: использовать коллбеки.

Код:
<script src="http://microajax.googlecode.com/svn/trunk/microajax.js"></script>
<script>
var url1 = "http://example.com/1";
var url2 = "http://example.com/2";

function changeload() {
    new microAjax(url1, function(response) {
        console.log(response);
        new microAjax(url2, function(response) {
            console.log(response);
        });
    });
}
</script>
Я не понял немного. как это работает?
function(response) - это я должен эту функцию определить?
откуда взялась переменная responce?


Дело в том что сервер тут непростой а на pic18
В качестве урла можно использовать сги скрипт как в моем случае?
Как он уйдет на сервер?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 07.11.2014 в 20:16.
WorldMaster вне форума Ответить с цитированием
Старый 07.11.2014, 20:23   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А зачем вам какой-то microajax с newAJAXCommand? Вы ж без доп. библиотек хотели. Ajax вроде как и на чистом JS легко делается, я скинул ссылку на пример с кодом выше:

Код:
request = new XMLHttpRequest();
request.open('GET', '/my/url', true);

request.onreadystatechange = function() {
  if (this.readyState === 4){
    if (this.status >= 200 && this.status < 400){
      // сделать что-то с ответом от сервера
      resp = this.responseText;
    } else {
      // Error :(
    }
  }
};

request.send(); // или POST параметры тут если POST запрос, типа request.send("myparam1=val1&myparam2=val2")
Цитата:
То сервер не успевает отработать смену активной ячейки и выдает данные предыдущей ячейки.
Так вы хотите при смене ячейки заблокировать смену, отправить запрос на сервер и ждать пока сервер ответит? Или что надо?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 07.11.2014 в 20:26.
Alex11223 вне форума Ответить с цитированием
Старый 07.11.2014, 20:39   #9
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Дело в том что сервер на пике это еще то извращение. И поэтому каких то кардинальных новшеств в систему вносить не хочется да и не всегда получится.
Используется штатная платформа от микрочипа там уже реализована функция newAJAXCommand да и поддержка с сервера тоже имеется. Поэтому и хочется делать именно этими командами. Код микроаякса может и сработает но вот место под него выделить очень проблематично. Просто мне не очень понятно как работает newAJAXCommand и почему нельзя никак схватить то что приходит после отправки команды.


Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так вы хотите при смене ячейки заблокировать смену, отправить запрос на сервер и ждать пока сервер ответит? Или что надо?
Повторюсь. При смене ячейки отправляется индекс выделенной ячейки. Сервер при получении производит загрузку данных из еепрома. Но так как команды шлются очень быстро то получается что сервер не успевает загрузить и подготовить данные.
Нужна либо задержка в отправке либо ожидание пока придет ответ и отправка следующей команды.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 09.11.2014, 02:16   #10
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Сделал с микроаяксом. Но вот следующая глючность появилась.
Код:
function changeload()
{
var objElement = document.getElementById("selectBoxId");
new microAjax('/protect/phsel.cgi?ph='+objElement.selectedIndex, function(response) {
        newAJAXCommand('/protect/phonestat.xml', updateStatus, false);
});
}
Данные приходят какие нужно но вот почему то не запускается обработчик updateStatus. Подскажите пожалуйста почему?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CGI скрипты Julila HTML и CSS 1 16.03.2013 03:10
задача по CGI Ymerla Общие вопросы Web 12 14.09.2012 16:11
CGI на си Sna1L Помощь студентам 6 06.11.2011 00:39
CGI аким Работа с сетью в Delphi 0 08.10.2008 11:35
CGI Pedro Работа с сетью в Delphi 0 17.11.2007 20:31