将JavaScript变量发送到PHP变量

43

一开始我以为需要将JavaScript转换为PHP,但后来发现由于服务器端和客户端的不同执行环境,无法进行转换。所以现在我只想发送一个变量。

<script type="text/javascript">
function scriptvariable()
{        
    var theContents = "the variable";
}
</script>

赋值给一个PHP变量

<?php
$phpvariable
?>

当我点击一个按钮时,JavaScript中的函数会执行。

现在我不知道如何将php变量分配给JavaScript变量,以使用php变量查找我的数据库中的信息。我知道我可以将它添加到我的URL或某些东西并刷新页面,但我想使用AJAX来完成这个任务,因为我可能需要在我的网页中进一步使用此Ajax方法。

那么,有没有一种简单的方法可以做到这一点,而不必在我的页面上倾倒大量代码来完成一个简单的任务?


1
你有没有考虑使用jQuery来实现ajax?它可以处理大部分繁琐的代码和工作。 - Bryan
4
在使用库之前,先学会如何使用。糖应该在拿到茶杯后再加入。 - Zirak
4
@Zirak 我不完全同意这个观点。它取决于用户的需求。在问题中提到了想要一个更简单的方法,不需要大量的额外代码,而jQuery可以为您完成这些。有些人想要制造汽车,而其他人只想换油 :) - Bryan
@Bryan,我同意Zirak的观点... jQuery并不是解决所有问题的终极方案。可以进行研究,并应该使用更小的JSON或Ajax库... 可以查看http://www.microjs.com....仅仅使用jQuery来运行你的ajax就像用电锯打开汽水罐一样,这太过浪费了。 - rlemon
@Bryan 这不是一辆汽车,这是使用锤子。我支持懒惰的态度 - 程序员应该懒惰。然而,这是你赢得的东西。如果你一路懒散,你可能能够制造汽车,但你无法将东西钉到墙上。懒惰的权利是通过努力工作赢得的。 - Zirak
显示剩余5条评论
3个回答

77

PHP运行在服务器端,而Javascript运行在客户端,因此您无法将PHP变量设置为等于Javascript变量,除非将值发送到服务器。但是,您可以将Javascript变量设置为等于PHP变量:

<script type="text/javascript">
  var foo = '<?php echo $foo ?>';
</script>

要将一个Javascript值发送到PHP,你需要使用AJAX。使用jQuery,它看起来会像这样(最简单的例子):

var variableToSend = 'foo';
$.post('file.php', {variable: variableToSend});

在您的服务器上,您需要接收通过POST发送的变量:

$variable = $_POST['variable'];

1
我知道我做错了什么......我只是不知道是什么... 这是我插入此代码的方式 <script type="text/javascript"> var variableToSend = 'foo'; $.post('file.php', {variable: variableToSend}); </script> ` ?> 然后我得到了一个未定义变量的错误... 注意:在php括号中未定义索引:variable你有什么想法我做错了什么? - mrbunyrabit
@mrbunyrabit,您需要在页面中包含jQuery库...否则,由jQuery使用的"$"变量将不会被定义。请查看这里的“完整示例”,以了解如何在页面中包含它。http://docs.jquery.com/Tutorials:How_jQuery_Works。 - Bryan
公平地说,如果没有像jQuery这样的库,使用AJAX就像走上一条充满死亡和绝望的道路。 - Alex Wayne
2
@Squeegy 简单的ajax事务大约需要6行代码。 - Zirak

46

正如Jordan所说,您必须将JavaScript变量发送回服务器,然后服务器才能处理该值。要做到这一点,您可以编写一个提交表单的JavaScript函数 - 或者您可以使用ajax / jquery。jQuery.post

也许对您来说最简单的方法是像这样:

function myJavascriptFunction() { 
  var javascriptVariable = "John";
  window.location.href = "myphpfile.php?name=" + javascriptVariable; 
}

在你的myphpfile.php文件中,在JavaScript被执行后,你可以使用$_GET ['name']


9
通常来说,简单易行的方法往往也是错误的方法。 - rlemon

3

这取决于您的页面的行为方式。如果您希望此操作异步执行,您需要使用AJAX。尝试在Google上搜索"jQuery post()"以查找一些教程。

在其他情况下,如果这将发生在用户提交表单时,您可以将变量发送到隐藏字段中,或将?variableName=someValue"附加到您正在打开的URL的末尾。 :

http://www.somesite.com/send.php?variableName=someValue

或者

http://www.somesite.com/send.php?variableName=someValue&anotherVariable=anotherValue

这样,您可以通过 PHP 访问此值:

$phpVariableName = $_POST["variableName"];

对于使用POST方法的表单或:

$phpVariableName = $_GET["variableName"];

对于使用GET方法或我上面提到的附加到URL方法(查询字符串)的表单,您需要注意以下内容。


要求OP为了进行简单的AJAX调用而“安装”并使用jQuery。 - PeeHaa
为什么不呢?试着向新用户解释如何在不到一页的纯JavaScript代码中实现跨浏览器AJAX调用。 - Ricardo Souza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接