Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP从JavaScript变量获取值_Javascript_Php - Fatal编程技术网

PHP从JavaScript变量获取值

PHP从JavaScript变量获取值,javascript,php,Javascript,Php,我有一个Index.php文件,其中包含一个简单的js、php语言,用于从javascript获取值,但我不能这样做。你能告诉我怎么做吗 这是我的index.php错误语法文件: var foo=“bar”; 如果我是对的,您希望在JavaScript中设置一个变量,并在PHP中读取其值。 如果那是对的,那就不可能了。原因很简单: PHP将在服务器端的HTTP服务器内执行,而JavaScript将在客户端的浏览器中执行 要将JavaScript变量的值传递给PHP,必须启动对PHP脚本的请求

我有一个Index.php文件,其中包含一个简单的js、php语言,用于从javascript获取值,但我不能这样做。你能告诉我怎么做吗 这是我的index.php错误语法文件:


var foo=“bar”;

如果我是对的,您希望在JavaScript中设置一个变量,并在PHP中读取其值。 如果那是对的,那就不可能了。原因很简单: PHP将在服务器端的HTTP服务器内执行,而JavaScript将在客户端的浏览器中执行

要将JavaScript变量的值传递给PHP,必须启动对PHP脚本的请求,并将该值添加到PSOT或GET请求中

一个非常简单的例子:

JavaScript部分

还有PHP部分

你不能这样做,至少你在这里的方式不行

PHP是一种服务器端语言,因此在将页面呈现给响应时执行,然后将响应传递回客户端(浏览器)

JavaScript是一种客户端语言,在浏览器读取它之前不会执行。因此,不可能将客户端数据(JavaScript)传递到服务器(PHP),因为这里有它

实现这一点的唯一方法是使用另一个页面,该页面通过JavaScript(使用表单提交或XMLHTTPRequest等)向PHP发布或获取数据,然后以这种方式处理PHP中发布的数据

下面是一个非常简单的示例,它对PHP页面执行GET:

在客户端(JavaScript):

在服务器端(PHP):


您可以创建一个隐藏的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>

var foo=“bar”;
//我假设您正在使用jQuery
jQuery('ifrm').contents().find('#inpt').val(foo);
jQuery('ifrm').contents().find('form').submit();

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>

应该是这样工作的,但是请记住——我还没有测试上面的代码。 但是你应该明白


玩得开心。

你不能那样做。PHP在服务器端和JS客户端评估JS.PHP之前运行。在JS开始执行之前,如果在服务器上运行php,这将永远不会起作用。我不知道你想做什么,但你做不到。你可以通过发送一个AJAX请求来实现这一点。不管怎样,当你发布它时,我不明白你为什么想要这个。
<?php
echo htmlentities($_REQUEST['foo']);
window.location.href = "http://yoursite.com/page.php?foo=bar";
<?php 
echo htmlspecialchars($_REQUEST['foo']);
?>
<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>
<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>