|
|
|
|
HELP plz ! Ajax javascript httprequest
Dernière réponse le 30 mai 2008 à 17:07:35 zek, le 30 mai 2008 à 09:13:42Bonjour, Voila j'ai un petit soucie... Je debute en codage javascript, ajax... J'aimerais creer une page que quand je la demarre,
il y a une requete qui regarde si le site internet est accessible ( url bonne)
si oui
sa m'envoi sur le site
sinon
sa m'envoi sur une page que j'ai en local.
Il faut obligatoirement que sa fonctionne sous mozilla.
j'arrive a faire en sorte d'aller sur le site internet mais pas sur la page local ...
Mon soucie viens au niveau du readyState.. faudrais qu e je fasse en sorte que si readyState se bloque avant 4 sa m'envoi sur la page local... en esperant que vous pourrez m'aider ! merci d'avance.
voici le code:
<html> <head> <title>TEST</title>
<script>
function Initialize()
{
try{
req=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
try{
req=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(oc){
req=null;
}
}
if(!req&&typeof XMLHttpRequest!="undefined")
{
req=new XMLHttpRequest();
}
}
function Eror()
{
location.href='page_interne.html';
sleep(1000);
}
function Process()
{
if (req.status == 0)
{
if(req.responseText!="")
{
var data = req.responseText;
location.href='http://www.google.fr';
sleep(1000);
}
}
else{
alert('Erreur de status');
}
}
function SendQuery()
{
Initialize();
var url="http://google.fr";
if(req!=null)
{
req.onreadystatechange = function()
{
if(req.readyState == 4)
{
Process();
}
}
req.open("GET", url, true);
req.send(null);
}
}
function BodyLoad()
{
SendQuery();
}
</script></head>
<body onload="BodyLoad();">
</body>
</html>Configuration: Linux Firefox 3.0
Cela ne fonctionne pas.... car en faite si je met cela.
|
Bjr
|
Hum autant pour moi Mimiste a vu juste on passe quand même en readyState 4 dans certains cas même si la réquête échoue. Par ex normalement on ne peut pas appeller une page via AJAX hors de son domaine : http://www.google.fr n'est pas autorisé sauf depuis le serveur de Google Mais dans ce cas le status retourné n'est pas égal à 200
<html> <head> <title>TEST</title>
<script>
var timerID=null;
var timeOutError = false;
var req=null;
function Initialize()
{
try{
req=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e) {
try{
req=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(oc){
req=null;
}
}
if(!req&&typeof XMLHttpRequest!="undefined")
{
req=new XMLHttpRequest();
}
}
function Eror()
{
location.href='page_interne.html';
sleep(1000);
}
function Process()
{
if (timerID != null)
{
window.clearTimeout(timerID);
timerID = null;
}
if (timeOutError)
{
return;
}
if (req.status == 200)
{
if(req.responseText!="")
{
var data = req.responseText;
location.href='http://www.google.fr';
sleep(1000);
}
}
else{
alert('Erreur de status');
}
}
function SendQuery()
{
Initialize();
var url="http://google.fr";
if(req!=null)
{
req.onreadystatechange = function()
{
if(req.readyState == 4)
{
Process();
}
}
req.open("GET", url, true);
req.send(null);
// Appel de la fct TimeOut() au bout de 60"
timeOutError = false;
timerID = window.setTimeout("TimeOut()",60000);
}
}
function BodyLoad()
{
SendQuery();
}
function TimeOut()
{
timeOutError = true;
// Interromp la requête
if (req && req.readyState != 4)
{
req.abort();
}
alert('Echec de la requête AJAX');
timerID = null;
}
</script></head>
<body onload="BodyLoad();">
</body>
</html>
note que j'ai remplacé if (req.status == 0) par if (req.status == 200) maintenant lorsque tu remplaces http://www.google.fr par http://www.google.ff et bien le TimeOut se déclenche Pour tester remplacer 60000 par 5000 par ex dans .setTimeout() PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ... |

