2009-08-22 8 views
0

Je rencontre des problèmes avec mon code javascript appelant mon php. Quelqu'un voit-il une erreur dans le code suivant? Je jure que je suis en utilisant le code comme ceci sur une autre partie du site ...basic xmlHttp question

var xmlHttp = createXmlHttpRequestObject(); 
var favSongArray = []; 

function createXmlHttpRequestObject(){ 
    var xmlHttp; 

    try{ 
    xmlHttp = new XMLHttpRequest(); 
    } 
    catch(e){ 
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", 
           "MSXML2.XMLHTTP.5.0", 
           "MSXML2.XMLHTTP.4.0", 
           "MSXML2.XMLHTTP.3.0", 
           "MSXML2.XMLHTTP", 
           "Microsoft.XMLHTTP"); 

    for(var i = 0; i < XmlHttpVersions.length && !xmlHttp; i++){ 
    try{ 
     xmlHttp = new ActiveXObject(XmlHttpVersions[i]); 
    } 
    catch(e){} 
    } 
} 

if(!xmlHttp){ 
    alert("Error creating the XMLHttpRequest object."); 
} 
else{ 
    return xmlHttp; 
} 
} 


function process(){ 

    if(xmlHttp){ 
    alert("sever is available"); 
    //if yes try 
    try{ 

     xmlHttp.open("GET", "php/getUntimed.php", true); 
     xmlHttp.onreadystatechange = function(){handleRequestStateChange();}; 
     alert("attempted to call p_handleRequestStateChange_test"); 
     xmlHttp.send(null); 
    }//end try 
    catch(e){ 
     alert("Can't connect to server: \n" + e.toString()); 
    }//end catch 
    }//end if xmlHHttp 

}//end function 

function handleRequestStateChange(){ 
    if(xmlHttp.readyState == 4){ 

    if(xmlHttp.status == 200){ 
    try{ 
    u_handleServerResponse(); 
    }//end try 
    catch(e){ 
    alert("Error reading the response: " +e.toString()); 
    }//end catch 
}//end if 
else{ 
    alert("There was a problem retriving the data:\n" + xmlHttp.statusText); 
}//end else 
}//end if 
}//end function 

function u_handleServerResponse(){ 
//need to clear array each time 
var response = xmlHttp.responseText; 

favSongArray = response.split("+"); 
alert("made it here"); 
//getFlashMovie("trackTimer").trackTimer(favSongArray[0]); 
} 
processus

() est appelée à partir d'un déclencheur onSubmit. Je continue d'obtenir un xmlHttp.status de zéro. Cela a-t-il du sens pour qui que ce soit? Merci

+0

Exécutez-vous Firebug? Le serveur reçoit-il la demande? –

+0

Où firebug afficherait-il cela? – danwoods

+0

Dans les onglets du réseau ou de la console. –

Répondre

0

Pourquoi n'essayez-vous pas d'utiliser des frameworks ajax? Comme jQuery par exemple.

3

status == 0 signifie généralement qu'il a été abandonné - soit en appuyant sur ESC ou en changeant l'adresse actuelle.

Ou, puisque vous utilisez une approche globale xmlHttp, vous appellerez open et/ou send avant la dernière demande a eu le temps de terminer. Pas tout à fait sûr qui, mais l'un d'eux commence par appeler abort.

1

Comme Jonathan Lonowski says, status == 0 signifie avortée, et vous avez dit que vous exécutez ce script onsubmit qui déclencherait la forme de soumettre, ainsi recharger la page et d'annuler la requête Ajax. Jetez un oeil aussi here.

+0

Merci, je savais que le rechargement de la page était en train de jouer avec elle en quelque sorte – danwoods