2017-02-23 178 views
0

我有一個Index.php文件,其中包含一個簡單的js,用於從javascript獲取值的php語言,但我無法做到這一點。你能告訴我怎麼做嗎?

這裏是我的index.php錯誤的語法文件:
PHP從JavaScript獲取價值變量

<html> 
<body> 
<script> 
    var foo = "bar"; 
</script> 
<?php 
    $fromJS = "<script>var jsfoo = foo;</script>"; 
    echo $fromJS; 
?> 
</body> 
</html> 
+2

你不能那樣做。 PHP在JS之前運行。 – Alex

+0

Php被評估爲服務器端和js客戶端。這絕不會起作用 –

+0

在JS甚至開始執行之前,PHP在服務器上運行。我不知道你在做什麼,但是你不能這樣做 – WillardSolutions

回答

0

如果我是正確的,你要在JavaScript設置一個變量,並閱讀其在PHP中的價值。 如果這是正確的,這是不可能的。原因很簡單: PHP將在服務器端的HTTP服務器內執行,而JavaScript則在客戶端的瀏覽器中執行。

要將JavaScript變量的值傳遞給PHP,您必須發起對PHP腳本的請求並將該值添加到PSOT或GET請求中。

一個很簡單的例子:

JavaScript部分

var foo = 'bar'; 
window.location.href = '/path/to/script.php?foo=' + foo; 

而且PHP的一部分

<?php 
echo htmlentities($_REQUEST['foo']); 

我希望幫助。

0

你不能這樣做,至少不是你在這裏的方式

PHP是服務器端語言,因此在頁面呈現給響應時被執行,然後返回給客戶端(瀏覽器)。

JavaScript是一個客戶端語言,並且在瀏覽器讀取它之前不會執行。因此,無法將客戶端數據(JavaScript)傳遞到服務器(PHP),因爲您在此處有

您可以實現這一目標的唯一方法是讓另一個頁面通過JavaScript(使用表單提交或XMLHTTPRequest等)將POST或GET數據傳遞給PHP,然後通過PHP以這種方式處理髮布的數據。

這裏是一個非常簡單的例子,它可以對PHP的網頁A:

在客戶端(JavaScript):

window.location.href = "http://yoursite.com/page.php?foo=bar"; 

在服務器端(PHP):

<?php 
echo htmlspecialchars($_REQUEST['foo']); 
?> 
0

您可以創建一個隱藏的iframe,並使用要發送到腳本的變量在iframe中提交表單。所有的DOM操作都可以通過iframe來完成。

<html> 
<body> 
<iframe id="ifrm" src="iframe.php" width="1" height="1" style="display: none;"></iframe> 
<script> 
    var foo = "bar"; 
// I assume you are using jQuery 
    jQuery('ifrm').contents().find('#inpt').val(foo); 
    jQuery('ifrm').contents().find('form').submit(); 
</script> 
</body> 
</html> 

iframe中。php

<html> 
<!-- include jQuery or whatever --> 
<body> 
<?php 
if(isset($_POST['inpt'])) { 
// Do your manipulations here 

    echo '<script type="text/javscript">'; 
// retrieve iframes parent (your webpage) 
    echo 'let parent = window.parent.document.body'; 
// do anything you want 
    echo 'parent.style.backgroundColor = \'#ff0000\''; 
    echo '</script>'; 
} 
?> 
<form action="#" method="post" enctype="multipart/form-data"> 
<input id="inpt" name="inpt" type="hidden" value="" /> 
</form> 
</body> 
</html> 

應該像這樣工作,但要記住 - 我沒有測試過上面的代碼。 但你應該明白。

玩得開心。