我对使用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)。当用户单击其中一个按钮时,我想更新视频表的“赞”列而不重新加载页面。那可能吗?
答案 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的用户也可以获得功能齐全的网站。
它被称为渐进增强。