2012-04-25 69 views
0

我有这个JavaScript函数,它从选择选项中的HTML得到一个值:在PHP变量中获取JavaScript变量值?

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

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

+0

你是否在getdetails.php文件中存储str的值? – gopi1410 2012-04-25 17:05:45

+0

可能的重复[参考:为什么我的Javascript中的PHP代码不起作用?](http://stackoverflow.com/questions/13840429/reference-why-does-the-php-code-in-my-javascript-不行) – Quentin 2013-04-17 21:50:12

回答

0

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

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

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的成功部分将被激活,你可以使用代码和描述来建立你的逻辑。