Bir sayfada iki xmlhttprequest çağrıları kullanarak

2 Cevap php

Ben iki bölünmeler var, <div id=statuslist></div><div id=customerlist></div>

Fonksiyonu sendReq(), bir XMLHttpRequest oluşturur ve bölünme içine veri getirir.

sendReq('statuslist','./include/util.php?do=getstatuslist','NULL');

sendReq('customerlist','emphome.php?do=getcustomerlist','NULL');

Ben bir sorun var,

'Customerlist' içine getirilen veriler 'statuslist' üzerine kopyalanan gets

I işlev çağrıları sırasını değiştirirseniz,

sendReq('customerlist','emphome.php?do=getcustomerlist','NULL');

sendReq('statuslist','./include/util.php?do=getstatuslist','NULL');

Şimdi 'statuslist' veri 'customerlist' içine alır ..

Nedir kodu ile sorun?

2 Cevap

Ben daha önce bu vardı.

Temelde bir kapsam sorun var - Eğer sendReq () fonksiyonu böyle bir şey var?

if (window.ActiveXObject)
{
 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest)
{
 xmlhttp = new XMLHttpRequest();
} 

Eğer ikinci bir istek yaptığınızda Ve böylece, xmlhttp nesne üzerinde basmış

Sen xmlhttp nesneleri çakismaz bir kapatma oluşturmak gerekiyor

örneğin

function sendReq(url, callbackFunction)
{
    var xmlhttp

    if (window.ActiveXObject)
    {
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if (window.XMLHttpRequest)
    {
     xmlhttp = new XMLHttpRequest();
    } 

    ...  probably some other stuff here, setting url etc ...

    xmlhttp.onreadystatechange = function()
    {
       if (xmlhttp.readyState==4&&xmlhttp.status='200')
       {
        if (callbackFunction) callbackFunction(xmlhttp.responseText);
       }
    }

    .. probably more stuff here  ( including xmlhttp.send() ) !! ...

}

Eğer bir parametre olarak geri çağırma işlevi geçebilir ve veri başarıyla yüklendiğinde, bu geri çağırma işlevi geçilecek. Eğer gerçek işlevini adını (işlev adı etrafında yüzden hiçbir tırnak) sadece geçmesi gerektiğini unutmayın

Alternatif olarak, ben sadece jQuery kullanmak hangi ne yapabilirdi - Benim js sorunların çoğu için işleri ;)

Umarım bu yardımcı olur

Sizin sendReq function muhtemelen bir XHR nesnesi oluşturur ve ikinci çağrı üzerine yeniden kullanır.

Düzenleme ----

Olduğu gibi-bu fonksiyon çalışır olmadığına bakın:

function sendReq(divId, url, whatEver) {
    var xmlhttp;
    try {
        xmlhttp = new XMLHttpRequest();
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
        } catch (e) {
            try {
                xmlhttp = new ActiveXObject("MICROSOFT.XMLHTTP");
            } catch (e) {
                return false;
            }
        }
    }
    xmlhttp.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == "200") {
            document.getElementById(divId).innerHTML = this.responseText;
        }
    };
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
}