在PHP变量中获取JavaScript变量值?

时间:2012-04-25 11:02:21

标签: variables

我有这个JavaScript函数,它从HTML中的select选项中获取值:

<script type="text/javascript">

function showUser(str) {
if (str=="") {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
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)  {
    var str=xmlhttp.responseText;
    var splitstr=str.split('||');

    document.getElementById("txtHint").innerHTML=splitstr[0];
    document.getElementById("txtval").innerHTML=splitstr[1];
    }
  }
xmlhttp.open("GET","getdetails.php?q="+str,true);
xmlhttp.send();
}

</script>

现在,str是我想要获取其值并将其放入PHP变量的JavaScript变量。

我正在使用它,但它不起作用:

$grade = "<script language=javascript>document.write(str);</script>";
echo $grade;

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

PHP在Web服务器上运行,因此只有在页面加载时才会执行。因此,上面的语句将不起作用,因为它在页面加载后调用的函数中运行。

要实现您想要的功能,您可以通过ajax调用将str发送到php文件并将其存储在会话变量中。 &安培;然后,当你需要变量时,调用另一个将检索会话值的ajax函数。

答案 1 :(得分:0)

您可以使用jQuery来处理AJAX调用。 确保在html页面中包含此行。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>

使用javascript调用PHP并发送str数据。

    function uploaddata(str) {
    if (str=="") {
      document.getElementById("txtHint").innerHTML="";
      return;
      }

          var fd = new FormData();
          fd.append('data1', str); 

          try {
          $.ajax({
            url: 'dosomething.php',
            data:fd,
            processData: false,
            contentType: false,
            type: 'POST',    
            success: function(data){
              var response = $.parseJSON(data);
              if (response.code !== '0'){
                alert(response.description);
              }
              else {
                alert(response.description);
              };
              },
            error: function(jqXHR, error, errorThrown)  {
              alert(jqXHR.responseText);} 
          });
            }
          catch (ex) {

          }
   }

在服务器端创建dosomething.php将完成您需要的过程。

<?php

// get your data at server side
   str = $_POST['data1'];

// do processing

// return answer to browser
   $ans = ['code' => '0', 'description' => 'Everything are ok'];
   echo json_encode($ans);
   return;
?>

在您的javascript中,将激活成功部分,您可以使用代码和说明来构建逻辑。