Вызов двух функций в одном onchange = не работает - PullRequest
0 голосов
/ 10 февраля 2012

Я искал, как поместить более одной функции в onchange, и я нашел, что-то вроде этого, например: onchange = "function1(); function2();". Моя проблема в том, что я следовал тому, что нравится в примере, но только функция 1 работает, функция 2 не работает. Если я сделаю иначе значение onchange = "function2(); function1();", только функция 2 будет работать, функция 1 не будет работать, то же самое.

Есть идеи, ребята? Спасибо.

Функции, которые я использовал Ajax:

function1(test)
{
    var kode = test.value;
    if (!kode) return;
    xmlhttp.open('get', '../template/get_name-opr.php?kode='+kode, true);
    xmlhttp.onreadystatechange = function() {
        if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200))
        {
            //alert(kode);
             document.getElementById("code").innerHTML = xmlhttp.responseText;
        }
        return false;
    }
    xmlhttp.send(null);
}

function2(test)
{
    var kode = test.value;
    if (!kode) return;
    xmlhttp**1**.open('get', '../template/get_name2-opr.php?kode='+kode, true);
    xmlhttp**1**.onreadystatechange = function() {
        if ((xmlhttp**1**.readyState == 4) && (xmlhttp**1**.status == 200))
        {
            //alert(kode);
             document.getElementById("code2").innerHTML = xmlhttp**1**.responseText;
        }
        return false;
    }
    xmlhttp**1**.send(null);
}

Чтобы решить мою проблему, я создал два разных xmlhttp. (xmlhttp и xmlhttp1).

Ответы [ 3 ]

1 голос
/ 11 февраля 2012

Перейдите по ссылке, которую я дал, похоже, проблема в том, как вы управляете объектами xmlhttprequest, правильно управляете их экземплярами, в вашем случае, потому что вы используете один и тот же xmlhttprequest для двух одновременных запросов AJAX,только один из них обслуживается.Либо подождите, пока один из них не будет обслужен, либо создайте два экземпляра xmlhttprequest.

. Оператор xmlhttp.readystate = function() {...} явно заменяет свойство readystate этого объекта xmlhttprequest, поэтому для вашей второй функцииэто заменяется (потому что вы используете xmlhttprequest для них обоих).Вот почему вы видите забавное поведение.

1 голос
/ 10 февраля 2012

Вызовите function2 () в конце function1 ().

onchange = "function1()"

function1(){
...
function1 body;
...
function2()
}
0 голосов
/ 10 февраля 2012

Оберните два вызова функций в один и вызовите эту функцию!

function myFirstFunction() {
   //body
}

function mySecondFunction() {
   //body
}

//Call this guy.
function myWrappedFunction() {
   myFirstFunction();
   mySecondFunction();
}
...