回应javascript里面的mysql语句

时间:2012-01-22 05:50:10

标签: php javascript

今天我试图在我的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>

2 个答案:

答案 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;
  }
  ?>

只是对概念提出一个想法。