2016-04-19 9 views
1

Ich schrieb den folgenden Code für ein kleines Ajax-Programm.
Ich bin die Lage, es auf IE 11 auszuführen, aber nicht auf Chrome und Firefox
Ajax-Programm funktioniert nicht auf Chrom

html-Datei:

<html> 
<head><title>Ajax Page</title> 
<script> 
function ajax_handler(){ 
    try 
    { 
     var xmlhttp = new XMLHttpRequest(); 
    }catch(e1){ 
     try{ 
      var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     catch(e2){ 
      try{ 
       var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
      }catch(e3){ 
       alert('ajax not supported'); 
       return false; 
      } 
     } 
    } 
    var rollno = document.getElementById("roll").value; 
    xmlhttp.onreadystatechange = getresult; 
    var url = 'ajax.php?roll='+rollno; 
    xmlhttp.open("GET",url,true);  
    xmlhttp.send(null); 
} 
function getresult(){ 
     if(xmlhttp.readyState==4 && xmlhttp.status==200){ 
      var sp = document.getElementById("result"); 
      sp.innerText=xmlhttp.responseText; 
     } 
    } 
</script> 
</head> 

<body> 
    Enter roll:<input type="text" id="roll" name="roll" /><br /> 
    <input type="button" name="submit" value="submit" onclick="ajax_handler()" /><br /> 
<span id="result"></span> 
</body> 
</html> 

Die entsprechende PHP-Seite:

<?php 
$roll = $_GET['roll']; 
if($roll == 1001){ 
    echo 'passed'; 
} 
?> 

Da es meine gesehen werden kann PHP-Programm sendet keine
XML-Daten zurück. Es sendet nur Text zurück. Was ist der Fehler, den ich mache

+2

Browser devtools Netzwerk Registerkarte. Die Anfrage/Antwort kann dort gesehen und debuggt werden. Was ist in der Antwort? – James

+2

Ich glaube nicht, dass dies in einem Browser funktioniert, wenn Sie versuchen, auf eine lokale Variable von einer nicht verwandten Funktion zuzugreifen. –

+0

@MattiVirkkunen yup.just fand es heraus.Vielen Dank – Pradeep

Antwort

0

Ein Fehler bei der Verwendung von var beim Deklarieren des XMLHttpRequest-Objekts. Entfernt es und hat es zur Arbeit gebracht.

1

Nachdem ich den Code ausprobiert habe, habe ich festgestellt, dass es tatsächlich an Chrom funktioniert, aber das Problem liegt bei der getresult() Funktion. Es wäre sicherer, die Funktion onreadystatechange inline zu definieren, anstatt sie anderswo zu definieren. Der Fehler ist hauptsächlich die Tatsache, dass die onreadystatechange nichts über das xmlhttp-Objekt weiß. Hier ist der Code.

<html> 
    <head><title>Ajax Page</title> 
    <script> 
    function ajax_handler(){ 
     try 
     { 
    var xmlhttp = new XMLHttpRequest(); 
    console.log('success'); 
}catch(e1){ 
    try{ 
     var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    catch(e2){ 
     try{ 
      var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
     }catch(e3){ 
      alert('ajax not supported'); 
      return false; 
     } 
    } 
} 
var rollno = document.getElementById("roll").value; 
//function is defined inline rather than defining it elswhere and calling the function 
xmlhttp.onreadystatechange = function() { 
    if(xmlhttp.readyState==4 && xmlhttp.status==200){ 
     var sp = document.getElementById("result"); 
     sp.innerText=xmlhttp.responseText; 
    } 
}; 
var url = 'test.php?roll='+rollno; 
xmlhttp.open("GET",url,true);  
xmlhttp.send(); 
    } 
</script> 
</head> 

<body> 
Enter roll:<input type="text" id="roll" name="roll" /><br /> 
<input type="button" name="submit" value="submit" onclick="ajax_handler()" /><br /> 
<span id="result"></span> 
</body> 
</html> 
Verwandte Themen