我试图将我的Ajax请求发送到相同的url,但是不管用……如果我把php放到另一个url上并发送它,它将工作。我试图保持我所有的代码在一页。这可能吗?
******** thispage.php *******
<?php
$theData=$_GET["data"];
if($theData != ""){
echo $theData;
exit;
}
?>
<script>
function SendData(){
if(window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
alert(xmlhttp.responseText);
}
}
var text = 'OK, it is working';
xmlhttp.open("GET","thispage.php?data="+text,true); //send it to this page.
xmlhttp.send();
}
</script>
<html>
<input type="button" value="Send" onclick="SendData()"/>
<html>
尝试添加退出;
if($theData != ""){
echo $theData;
exit;
}
是的,有可能。你的概念是对的,但是实现起来不太对。
vat text = 'OK, it's working';
我不确定这是不是打错了,但这当然应该是:
var text = 'OK, it's working';
另一个更相关的问题是,您实际上没有使用Javascript获得响应。你需要这样做:
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4){
// do something with the response
alert(xmlhttp.responseText);
}
}
它的作用是为请求完成时设置一个处理程序。在你的代码中:
xmlhttp.open("GET","thispage.php?data="+text,true); //send it to this page.
传递给xmlhttp.open
的true
参数告诉它使请求异步——换句话说,它在继续执行Javascript之前不会等待请求完成。因此,我们需要为onreadystatechange事件指定一个操作,这样一旦请求完成,我们就可以对返回的数据执行一些操作。