JavaScript:If子句部分执行

时间:2010-06-07 15:44:00

标签: php javascript confirm

我的问题是,当条件为真时,它将关闭窗口但不执行php部分!

这里是我的代码..

<script type="text/javascript">  
function onClose()  
{  
var r=confirm("Is the meeting Over!");  
if (r==true)
 {  
<?php $result=mysql_query($sql);?>  
window.close();  
 }  
else  
 {  
<?php $result2=mysql_query($sql2);?>    
 }  
}  
</script>  

这是php部分..

$sql="UPDATE previousmeetings SET Live='0' WHERE MeetingID='34'"; //$meeting_id  

$sql2="UPDATE previousmeetings SET Live='1' WHERE MeetingID='34'";

4 个答案:

答案 0 :(得分:7)

Javascript在客户端执行,PHP在服务器上执行。运行Javascript时已经执行了PHP。

如果您希望Javascript在服务器上执行功能,那么您需要使用Ajax来调用PHP script来为您执行服务器端操作。

现在构建代码的方式,你这样做:

客户请求 - &gt;执行PHP代码(两个查询) - &gt;浏览器解析HTML和Javascript - &gt; Javascript已执行。

您要做的是设置Javascript可以调用的另一个PHP脚本。这样您就可以获得所需的操作顺序:

客户请求 - &gt;浏览器解析HTML和Javascript - &gt; Javascript被执行。
如果需要,时间过去
客户采取行动 - &gt; Javascript向PHP脚本发出Ajax请求 - &gt;执行适当的查询。

答案 1 :(得分:5)

您正在尝试在JavaScript块中执行PHP代码。 PHP是服务器端,JS是客户端,所以这不会工作。

如果您需要通过JS调用PHP脚本,您可以使用AJAX调用,jQueryPrototype等库将使这更容易。

答案 2 :(得分:4)

所有PHP代码都在服务器上执行,然后发送到客户端(浏览器)进行显示。你不能通过这样的Javascript有条件地执行PHP。但是,您可以使用AJAX通过Javascript与服务器进行通信。

例如(这是伪代码):

if (r==true)
{
  ajax_request("perform query 1");
  window.close();
}
else
{
  ajax_request("perform query 2");
}

所有Javascript框架库(Prototype,jQuery等)都提供AJAX功能。

答案 3 :(得分:2)

PHP代码在页面提供时执行,它不受浏览器加载后执行的Javascript条件的影响。

您想要AJAX来电。