Необходимо остановить выполнение метода javascript до получения ответа cgi - PullRequest
0 голосов
/ 09 сентября 2011

Я работаю над веб-приложением, в котором я вызываю cgi-bin с бэкхенда. Я использую для этого запрос ajax. Теперь я хочу один сценарий, в котором я хочу дождаться получения ответа cgi. Фактически одно действие формыназывается который также является CGI.Теперь я могу выполнить задачу, но метод возвращается первым, а ответ cgi получен позже. В зависимости от ответа cgi необходимо вызвать действие.Является ли это возможным ?Пожалуйста, помогите ... Заранее спасибо ... Вот код, который я использую: -

var flag = "";
if (xmlHttpReq.readyState == 0){        
        xmlHttpReq.open('POST', destinationURL, true);
        xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xmlHttpReq.onreadystatechange = function() {
            if (xmlHttpReq.readyState == 4) {                
                if(xmlHttpReq.responseText == "OK"){
                    flag = true;
                }
                else{        
                    flag = false;
                }
            }            
        }
        xmlHttpReq.send();

    }
    return flag;

Теперь я хочу вызывать действие формы только тогда, когда установлен флаг true, вызывая эту функцию в событии onclick кнопки сtype = "submit".

1 Ответ

0 голосов
/ 09 сентября 2011

оставьте первый ответ в глобальной переменной, а для второго вызова, если он зависит от первого, просто подождите ...

Как Я ненавижу кросс-браузерные проблемы ,вот версия jQuery :

$("form").submit(function() {

    // let's get what we need
    $.ajax({
        url: destinationURL,
        context: document.body,
        async: false, // you want a synchronous call
        success: function(){
          // done
        },
        error: function() { alert('something went wrong...'); }
    });

    // Continue your work, the line below will only be processed
    //   after the $.ajax call is made

});
...