Ajax不会发送到它的相同URL。可能吗

时间:2011-08-19 22:33:03

标签: php ajax url

我正在尝试将我的Ajax请求发送到同一个网址但是 它不工作..如果我把PHP放在另一个网址并发送它,它将工作。 我试图将所有代码保存在1页上。这可能吗?

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

2 个答案:

答案 0 :(得分:0)

尝试添加退出;在echo $ theData之后;

if($theData != ""){
    echo $theData;
    exit;
}

答案 1 :(得分:0)

是的,这是可能的。你有正确的概念,但实施并不完全正确。

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.

传递给true的{​​{1}}参数告诉它使请求异步 - 换句话说,在继续Javascript之前它不会等待请求完成执行。因此,我们需要为onreadystatechange事件指定一个动作,这样一旦请求完成,我们实际上会对返回的数据做一些事情。