JavaScript传递变量并从PHP页面检索输出

时间:2013-07-08 02:38:18

标签: php javascript html ajax

尝试将变量传递给PHP文件,然后获取该文件的输出。

Page1.html:

 <h2 id="test"></h2>
 <script>
 var data2;
 $.post('textandemail.php',{ txt: "John", email: "test@gmail.com" },
  function(data) {
 data2 = data;});
 document.getElementById("test").innerHTML = data2;
 </script>

textandemail.php:

  $variable = $_POST["txt"];
  $variable2 = $_POST["email"];
  echo $variable;
  echo $variable2;    

希望这描述了理想的想法。我将在PHP文件中做更多的事情,但最后回应出我希望JavaScript读取并实现到html页面的响应。

3 个答案:

答案 0 :(得分:1)

您的帖子调用是异步的,只有在完成一个过程后才能访问data2变量,因此您应该在回调函数中执行....innerHTML ...,当数据可用时,而不是之前

在任何js网站上都有很多很好的例子。在jQuery doc你有一个很好的例子。 由于您使用的是jQuery,因此您也可以替换innerHTML电话。

答案 1 :(得分:1)

$.post()函数是异步的。它结束了一段时间。您需要将该函数的结果赋值放入成功处理程序中,而不是在函数本身之后,因为正如您现在所做的那样,行document.getElementById("test").innerHTML = data2;正在ajax函数完成之前发生,因此它不会工作

这是你可以做到的:

<h2 id="test"></h2>
 <script>
 $.post('textandemail.php',{ txt: "John", email: "test@gmail.com" },
    function(data) {
       // any code that uses the ajax results in data must be here
       // in this function or called from within this function
       document.getElementById("test").innerHTML = data;
    }
  );
 </script>

或者,既然你有jQuery,你可以这样做:

<h2 id="test"></h2>
 <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
 <script>
 $.post('textandemail.php',{ txt: "John", email: "test@gmail.com" },
    function(data) {
       // any code that uses the ajax results in data must be here
       // in this function or called from within this function
       $("#test").html(data);
    }
  );
 </script>

答案 2 :(得分:1)

你应该使用ajax函数在php和javascript之间进行通信

 function Ajax_Send(GP,URL,PARAMETERS,RESPONSEFUNCTION){
var xmlhttp
try{xmlhttp=new ActiveXObject("Msxml2.XMLHTTP")}
catch(e){
try{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}
catch(e){
try{xmlhttp=new XMLHttpRequest()}
catch(e){
alert("Your Browser Does Not Support AJAX")}}}

err=""
if (GP==undefined) err="GP "
if (URL==undefined) err +="URL "
if (PARAMETERS==undefined) err+="PARAMETERS"
if (err!=""){alert("Missing Identifier(s)\n\n"+err);return false;}

xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState == 4){
if (RESPONSEFUNCTION=="") return false;
eval(RESPONSEFUNCTION(xmlhttp.responseText))
}
}

if (GP=="GET"){
URL+="?"+PARAMETERS
xmlhttp.open("GET",URL,true)
xmlhttp.send(null)
}

if (GP="POST"){
PARAMETERS=encodeURI(PARAMETERS)
xmlhttp.open("POST",URL,true)
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
xmlhttp.setRequestHeader("Content-length",PARAMETERS.length)
xmlhttp.setRequestHeader("Connection", "close")
xmlhttp.send(PARAMETERS)    

调用函数将其放在javascript页面中

Ajax_Send("POST","users.php",data,e)

其中data是您发送到php页面的数据,e是您将php页面的输出传递给它的函数