簡體   English   中英

PHP從JavaScript變量獲取價值

[英]PHP Get Value from JavaScript Variable

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

這是我的index.php錯誤的語法文件:

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

如果我是對的,您想在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']);

希望對您有所幫助。

您無法做到這一點, 至少不是這里的方式

PHP是一種服務器端語言,因此在將頁面呈現給響應時執行,然后將其傳遞回客戶端(瀏覽器)。

JavaScript是一種客戶端語言,在瀏覽器讀取之前不會執行。 因此,無法像在此處將客戶端數據(JavaScript)傳遞到服務器(PHP) 一樣

實現此目的的唯一方法是擁有另一個頁面,該頁面通過JavaScript(使用表單提交或XMLHTTPRequest等)將數據發布或獲取到PHP,然后以這種方式處理PHP中發布的數據。

這是一個非常簡單的示例,對PHP頁面執行GET:

在客戶端(JavaScript):

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

在服務器端(PHP):

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

您可以創建一個隱藏的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>

應該像這樣工作,但請記住-我尚未測試以上代碼。 但是你應該明白這個想法。

玩得開心。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM