今天我试图在我的javascript代码中回显这个php mysql语句,该代码开始onclick。但是,这个php语句似乎在页面加载时运行,而不是等到onlclick事件。有什么方法可以解决这个问题吗?我知道我可以使用javascript打开其他页面,然后回调php语句,但我希望这个重量轻。 谢谢!
<script type="text/javascript">
function exitchatfriend() {
document.getElementById("clicktoenteraconversation<?php
echo $otherchatuser ?>").style.display='none';
document.getElementById("chatcontainer").style.display='none';
<?php mysql_query("DELETE FROM currentconversation
WHERE username='$username' and otherchatuser='$otherchatuser'"); ?>
}
</script>
答案 0 :(得分:3)
你对PHP和javascript的相对角色存在根本的误解。 PHP是服务器端将始终在页面发送到客户端之前执行。这意味着代码永远不会发送到客户端,只会发送到结果。如果我有:
<?php echo "1+1 is ".(1+1); ?>
发送给客户端的源代码是
1+1 is 2
另一方面,Javascript在客户端执行。代码被发送到用户的计算机,您希望(希望)用户的浏览器正确解释代码并执行所询问的内容。 (这就是为什么不能依赖javascript进行验证等等,因为你无法控制客户端使用你发送的代码做什么)。
如果你想要onclick事件来运行php脚本,你必须使用AJAX(这基本上只是javascript在后台执行新页面加载并对结果做一些事情)。但是,ajax不是超快(你不想运行
for(i=0;i<10000;i++){
//some ajax call
}
并且您不能依赖它(因此,如果运行此查询非常重要:
mysql_query("DELETE FROM currentconversation WHERE username='$username' and otherchatuser='$otherchatuser'");
您需要寻找其他方式来结束对话。
答案 1 :(得分:0)
<script type="text/javascript">
function exitchatfriend() {
document.getElementById('clicktoenteraconversation'+ id_of_otherchatuser ).style.display='none';
document.getElementById("chatcontainer").style.display='none';
//A Jquery AJAX Call
var url = "YOUR_SITE_URL/ajax/deleteUser.php";
$.post(url,{" id_of_otherchatuser": id_of_otherchatuser ,"username":username},function(res){
if(res)
{
alert('deleted')
}
});
}
}
</script>
//on the server side /ajax/deleteUser.php
<?php
$otherchatuser=$POST['id_of_otherchatuser'];
$username=$POST['username'];
if(mysql_query("DELETE FROM currentconversation WHERE username='$username' and otherchatuser='$otherchatuser'"))
{
return true;
}
?>
只是对概念提出一个想法。