2016-04-19 11 views
1

小さなajaxプログラム用に次のコードを記述しました。
私はIE 11ではなく、ChromeとFirefoxの
クロムでAjaxプログラムが機能しない

htmlファイルにそれを実行することができています:それは私の見ることができるように

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

<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> 

対応するPHPページPHPプログラムは
XMLデータを返信しません。テキストのみを返します。私がやっている間違いは何ですか

+2

ブラウザのdevtoolsネットワークタブ。要求/応答はそこで見られ、デバッグされます。回答には何がありますか? – James

+2

これは、関係のない関数からローカル変数にアクセスしようとしているのを見て、どのブラウザーでも動作しないと思います。 –

+0

@MattiVirkkunen yup.justそれを考え出した。ありがとう – Pradeep

答えて

0

varを間違えてXMLHttpRequestオブジェクトを宣言しました。 削除して動作させました。

1

コードを試してみると、実際にはクロムで動作することがわかりましたが、問題はgetresult()機能にあります。 onreadystatechange関数を他の場所で定義するのではなく、インラインで定義する方が安全です。このエラーは、主にonreadystatechangeがxmlhttpオブジェクトについて認識していないという事実です。ここにコードがあります。

<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> 
関連する問題