2012-04-25 68 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的成功部分將被激活,你可以使用代碼和描述來建立你的邏輯。