通过javascript将变量传递给PHP

时间:2012-03-27 20:26:55

标签: php javascript

我对使用JS和PHP有点陌生,偶然发现了一个小问题。我试图将我点击的文本框的ID传递给PHP,然后查询具有该ID的数据库。我尝试了以下代码来检查变量是否被传递,但没有任何警报:

<script type="text/javascript">
function Like(ID)
{
<?php

$id = ID;
print "alert('$id');";

?>
}
</script>

<input type="text"  id="1" onclick="Like(this.id)" >

我正在努力实现的目标:

我有一个带有唯一ID的视频数据库。我在每个视频旁边都有2个按钮,用于喜欢或不喜欢。 2个按钮将具有基于视频ID的ID。例如,视频编号2有2个按钮:喜欢(id = L2)和不喜欢(id = D2)。当用户单击其中一个按钮时,我想更新视频表的“赞”列而不重新加载页面。那可能吗?

2 个答案:

答案 0 :(得分:2)

你不可能按照你写的方式做到这一点。 PHP在页面加载时运行 一次 。因此,当您单击输入时,您的函数将由php评估为:

<script type="text/javascript">
function Like(ID)
{
alert('ID');
}
</script>

ID是php的一个简单词,因此它将其视为常量(如果已定义)或字符串(并可能生成警告)。假设您没有ID,那么它会在alert变量中打印带有"ID"字符串的$id行。

当你的javascript被调用时,你得到的只是alert('ID')

要查询数据库,您必须将数据传递回服务器。这将加载一个新页面,或者如果您希望它在没有页面加载的情况下发生,您需要异步调用服务器(在后台),并根据结果修改页面。这叫做AJAX。您将需要了解服务器代码(php)和客户端代码(php)如何工作,然后您将能够更好地理解AJAX如何将这些组合在一起以执行您想要的操作。

答案 1 :(得分:1)

因为您在评论中提到了这一点:

  

好吧,我有一个带有唯一ID的视频数据库。我在每个视频旁边都有2个按钮,用于喜欢或不喜欢。 2个按钮将具有基于视频ID的ID。例如,视频编号2有2个按钮:喜欢(id = L2)和不喜欢(id = D2)。当用户单击其中一个按钮时,我想更新视频表的“赞”列而不重新加载页面。那可能吗?

我会告诉你一种实现它的方法,它甚至不需要Javascript! :)(至少在开始时)。

这是一个老式的HTML表单元素。由于您将发布数据,因此您应该使用操作帖子。代码可能如下所示:

<form method="post" action="/requests/like-video/" class="like-video">
    <div>
        <input type="hidden" name="video_id" value="<?php echo $video->id ?>">
        <input type="submit" value="Like">
    </div>
</form>

<form method="post" action="/requests/dislike-video/" class="dislike-video">
    <div>
        <input type="hidden" name="video_id" value="<?php echo $video->id ?>">
        <input type="submit" value="Dislike">
    </div>
</form>

一旦你有了这个(和工作),这只是一个hijaxing这些形式的问题。一个非常简单的方法是使用jQuery的Form插件并运行:

$('form.like-video').ajaxForm(OPTIONS_GO_HERE);
$('form.dislike-video').ajaxForm(OPTIONS_GO_HERE);

这样做可以确保没有JS的用户也可以获得功能齐全的网站。

它被称为渐进增强。