2015-05-05 56 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

相關問題