【问题标题】:Ajax won't send to the same url it's from. Is it possibleAjax 不会发送到它来自的相同 url。是否可以
【发布时间】:2011-08-19 22:33:02
【问题描述】:

我正在尝试将我的 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>

【问题讨论】:

  • 这是您使用的代码吗? var text // etc 行显然是错误的。
  • 谢谢 .. 我在代码的其他地方发现了错误。我已将上面的代码编辑为正确的。希望这对其他人有所帮助。

标签: php ajax url


【解决方案1】:

尝试添加退出;回显后 $theData;

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

【讨论】:

  • 谢谢 .. 我在代码的其他地方发现了错误。我已将上面的代码编辑为正确的。希望这对其他人有所帮助。
【解决方案2】:

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

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.opentrue 参数告诉它发出请求异步——换句话说,它在继续执行Javascript 之前不会等待请求完成。因此我们需要为 onreadystatechange 事件指定一个动作,这样一旦请求完成,我们就可以真正对返回的数据做一些事情。

【讨论】:

  • 谢谢 .. 我在代码的其他地方发现了错误。我已将上面的代码编辑为正确的。希望这对其他人有所帮助。
猜你喜欢
  • 2023-04-10
  • 1970-01-01
  • 2015-03-25
  • 2013-01-07
  • 1970-01-01
  • 2011-10-13
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多