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