2017-02-23 163 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> 

应该像这样工作,但要记住 - 我没有测试过上面的代码。 但你应该明白。

玩得开心。