Ajax 程序无法在 chrome 上运行
Ajax program not functioning on chrome
我为一个小 ajax 程序编写了以下代码。
我可以在 IE 11 上执行它,但不能在 chrome 和 firefox
上执行
html 文件:
<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
$roll = $_GET['roll'];
if($roll == 1001){
echo 'passed';
}
?>
可以看出我的 PHP 程序没有发回任何
XML data.It 只发回 text.What 是我做的错误
在声明 XMLHttpRequest 对象时错误地使用了 var
。
删除它并让它工作。
尝试代码后,我意识到它确实适用于 chrome,但问题出在 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>
我为一个小 ajax 程序编写了以下代码。
我可以在 IE 11 上执行它,但不能在 chrome 和 firefox
html 文件:
<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
$roll = $_GET['roll'];
if($roll == 1001){
echo 'passed';
}
?>
可以看出我的 PHP 程序没有发回任何
XML data.It 只发回 text.What 是我做的错误
在声明 XMLHttpRequest 对象时错误地使用了 var
。
删除它并让它工作。
尝试代码后,我意识到它确实适用于 chrome,但问题出在 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>