Javascript AJAX işlevi yüklenmiyor

2 Cevap php

Ben daha modüler olması kadar kırık bir realtivley Basit Bir Ajax uygulaması vardı. Aşağıdaki kod linkten olduğunu ve ne ben özellikle yaptım Bu thery ince çalışması gerekir içeri veri koymak için katman için bir değişken almak için GetRecordSet fonksiyonu ve izin fetchcompelte ekleyin. I () olarak s uyarısı koyduğunuzda, kod ya iç dışında, çalıştırmak gibi görünüyor FetchComplete içinde hükümler eğer.

http://www.nomorepasting.com/getpaste.php?pasteid=22558

Bu ince olması gerektiği gibi tekrar görünüyor, get_records.php için kod

http://www.nomorepasting.com/getpaste.php?pasteid=22559

ve bu özgün index php dosyası

http://www.nomorepasting.com/getpaste.php?pasteid=22560

2 Cevap

Firsly Ben Shyam ile kabul edeceğini ve aynı zamanda Firefox için Firebug'u yüklemek; Bu javascript hata ayıklama için büyük bir yardımcı olacaktır.

Neyse, hat

xmlHttp.onreadystatechange = FetchComplete(layername);

ne istediğiniz değil, hangi FetchComplete(layername) xmlHttp.onreadystatechange için sonucunu atar. Olması gerekir

xmlHttp.onreadystatechange = FetchComplete;

Ama o zaman layername geçen sorun var.

Eğer kolayca dışında tanımlanan değişkenler kullanabilirsiniz anonim bir iç fonksiyonu olarak onreadystatechange tanımlamak, bu nedenle eğer böyle bir şey yapabilirsiniz:

function GetAuctionData(pk) {

    var xmlHttp=GetXmlHttpObject();
    var layer = "Layer2";

    if(xmlHttp==null) {
        alert("Your browser is not supported?");
    }

    var url="get_auction.php?";
    url=url+"cmd=GetAuctionData&pk="+pk;
    url=url+"&sid="+Math.random();

    xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
            document.getElementById(layer).innerHTML=xmlHttp.responseText
        } else if (xmlHttp.readyState==1 || xmlHttp.readyState=="loading") {
            document.getElementById(layer).innerHTML="loading"
        }
    };

    xmlHttp.open("GET",url,true)
    xmlHttp.send(null)
}

Bir Kapanış yaratıyor çünkü layer, GetAuctionData yerel bir değişken (olarak tanımlanır), ancak anonim işlevi erişilebilir. Ben yukarıdaki işlevini test değil unutmayın, ancak prensip olarak çalışması gerekir.

Ben soyut tüm durum sizin kodu denetler ve kolaylaştırmak ve karmaşa kurtulmak istiyorum http://www.prototypejs.org adlı prototypejs, kullanmanızı öneririm.

Nedense kendi kod kullanmayı tercih ederseniz o zaman XMLHttpRequestObject readyState özelliği için dize değerlerini kullanmaktan kaçının. Yerine aşağıdaki tabloyu kullanın

 State Description 
   0   The request is not initialized 
   1   The request has been set up 
   2   The request has been sent 
   3   The request is in process 
   4   The request is complete

ve kontrol.