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

jjhzyzn0  于 2023-05-21  发布在  PHP
关注(0)|答案(2)|浏览(155)

我有一个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是JavaScript变量,我想取它的值并将其放入PHP变量中。
我正在使用这个,但它不工作:

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

正确的方法是什么?

qv7cva1a

qv7cva1a1#

PHP在Web服务器上运行,因此它仅在页面加载时执行。因此,上面的语句将不会工作,因为它在页面加载后调用的函数中运行。
为了实现你想要的,你可以通过 AJAX 调用把str发送到一个php文件,并把它存储在一个会话变量中。然后,每当你需要这个变量时,调用另一 AJAX 函数,它将检索会话值。

unftdfkk

unftdfkk2#

你可以使用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) {

          }
   }

在服务器端创建dossomething.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成功部分将被激活,你可以使用代码和描述来构建你的逻辑。

相关问题