2015-10-11 77 views
1

我曾經嘗試這樣的代碼:JavaScript變量到PHP是已經到JavaScript

<script type="text/javascript"> 
    var s = 0; 
    document.getElementById('text').value = "<?php echo phpVal[s];?>"; 
</script> 

問題是我怎麼可以把(S)值代入式(PHP)的代碼。

這裏有更多的上下文:

<head> 
<?php $s = ["a","b","c"]; ?> 
<script type="text/javascript"> 
function doFun(ss){ 
    var data = "<?php echo json_encode($s); ?>"; 
    document.getElementById('t').value = s[ss]; 
} 
</script> 
</head> 
<body> 
<input type="text" id="t" name="t" /> 
<button type="button" id="b" name="b" onclick="doFun(0)">doFun</button> 
</body> 
+0

你想要達到不可能的目標嗎?這就像混合油和水。 – invisal

+0

@invisal爲什麼不可能! – Anas

+0

,因爲您不能將服務器端腳本與客戶端腳本混合使用。當然,有解決方法,但沒有一個真正將代碼混合在一起。 – invisal

回答

2

你不能,由時間s有一個值(客戶),則PHP代碼(服務器)都有長,因爲完成。

你做什麼取決於你的最終目標是lot。你有很多選擇。下面是它們中的兩種:

  1. 輸出整個phpVal陣列/對象給客戶端,然後索引到它與s

    var s = 0; 
    var data = <?php echo json_encode(phpVal)%>; 
    document.getElementById('text').value = data[s]; 
    
  2. 發送s通過AJAX的服務器,具有響應於運行一個要求從phpVal挑選出正確的值,並返回作爲Ajax的結果的PHP代碼,將其放入客戶端inputvalue。例如:

    的JavaScript:

    var s = 0; 
    var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = function() { 
        if (xhr.readyState == 4 && xhr.status == 200) { 
         document.getElementById('text').value = xhr.responseText; 
        } 
    }; 
    xhr.open("get-value.php?s=" + encodeURIComponent(s)); 
    // You don't really need this^
    // for `0`, but many times when sending variables to the 
    // server, you do 
    xhr.send(); 
    

    PHP爲get-value.php大致):

    <?php 
    header('Content-Type: text/plain'); 
    $phpVal = /*...get the value however it is you do that...*/ 
    echo $phpVal[$_GET['s']]; 
    ?> 
    

但同樣這取決於你實際上要怎樣做。

+0

這個解決方案可能有幫助,但我不需要連接服務器,並帶來數據...我已經有一個數組,我想把它的價值(s)取決於我想發送的索引...例如 – Anas

+0

<?php $ s = [「a」,「b」,「c」]; ?> <按鈕類型= 「按鈕」 ID = 「B」 名稱= 「B」 的onclick =「doFun (0)「> doFun – Anas

+0

@Anas:要改善/澄清你的問題,請使用問題上的」編輯「鏈接。正如你所看到的,註釋中的代碼不太可讀。*編輯:*我這次爲你做了。 –