2015-05-05 54 views
0

我正在使用来确认内容的删除。 我已经使用js确认用户删除内容..但如果用户取消确认对话框,它应该重定向..但相反,页面加载整个脚本,然后重定向!Javascript正在加载脚本的其余部分也是

脚本放在这里......

if (confirm("Are you sure you want to delete??")) 
alert("deletion successful"); 
else 
history.go(-1); 
alert("unwanted alert"); 

这种不必要的警报还显示,当我点击确认在对话框中取消..

编辑.. 实际上整个代码是这样这..也许这将清楚地看到我的问题是什么

<html> 
<script> 
    if (!confirm("Are you sure you want to delete??")) 
     history.go(-1); 
</script> 

<?php 
require_once "config.php"; 

$query= 'DELETE FROM `sess` WHERE `sid` ='.$_GET['bid']; 

if ($conn->query($query) === TRUE) {?> 

<script> 
    alert("deletion successful"); 
    window.location.replace("../index.php"); 
</script> 

<?php 
} else {?> 

<script> 
    alert("unable to delete!"); 
    window.location.replace("../index.php"); 
</script> 

<?php }?> 

</html> 
+0

你是什么意思由'页面加载整个脚本'?而不需要的警报,它应该是“else”块的一部分吗? –

+0

你可以修理缩进吗? – usethedeathstar

回答

0

您的编辑揭示了问题。

您的PHP代码在服务器和上运行,然后页面被传送到浏览器。因此,即使您输出的JavaScript代码询问用户是否要确认,在页面发送到浏览器之前,这些内容也不会执行任何操作。您的服务器端代码继续运行,执行SQL语句。

所以基本上把它分成服务器和客户端部分,则您的代码运行:

首先,这个服务器端的代码运行:

require_once "config.php"; 

$query= 'DELETE FROM `sess` WHERE `sid` ='.$_GET['bid']; 

if ($conn->query($query) === TRUE) { 
    /*...write some output to the response...*/ 
} else { 
    /*...write some other output to the response...*/ 
} 

然后,响应时发送给客户端,看起来像这样(假设查询呼叫返回TRUE):

<html> 
<script> 
    if (!confirm("Are you sure you want to delete??")) 
     history.go(-1); 
</script> 
<script> 
    alert("deletion successful"); 
    window.location.replace("../index.php"); 
</script> 
</html> 

此时,删除已经发生。浏览器接收到此响应并显示confirmalert,并执行对该位置的更新,但同样对先前服务器上发生的事件没有影响。

您需要先确认,在任何页面上调用此页面,所以它发生在服务器端代码运行之前。


我建议加强从您目前的任务回来,通过一些良好的PHP和网络教程工作,这样你就可以更好地了解和事情时有发生。

+0

是的,但不需要的提示,我的意思是一些PHP代码... 但使用返回后,它不显示确认对话也... – piyushkantm

+0

@piyushkantm:PHP代码运行*服务器*上,甚至在页面甚至去浏览器。在添加'return'后没有显示'confirm':所有应有的尊重,你必须在添加它时犯了错误。 –

+0

我在上面的代码中添加了返回值,{}中也添加了返回值。它可能是我犯了一个愚蠢的错误,但无法找到 – piyushkantm

相关问题