0

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

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

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

4

2 回答 2

0

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

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

于 2012-04-25T17:10:07.087 回答
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 中,成功部分将被激活,您可以使用代码和描述来构建您的逻辑。

于 2013-04-17T21:46:04.107 回答