2015-05-05 2 views
0

Я использую для подтверждения удаления содержимого. Я использовал js, чтобы подтвердить, что пользователь удаляет контент. Но если пользователь отменяет диалог подтверждения, он должен перенаправить .. но вместо этого страница загружает весь скрипт, а затем перенаправляет!Javascript загружается также остальная часть скрипта

сценарий здесь идет ...

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

этот нежелательный сигнал тревоги также отображается, когда я нажав на отменить в диалоговом окне подтверждения ..

Edit .. фактически весь код выглядит это .. возможно, это даст ясное представление о том, что моя проблема

<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> 

На данный момент удаление уже произошло. Браузер получает этот ответ и показывает confirm и alert и обновляет его до местоположения, но опять же, что не влияет на то, что произошло на сервере раньше.

Вам нужно, чтобы подтверждение было выполнено ранее, на любой странице , вызывающей на этой странице, так что это происходит до запуска кода на стороне сервера.


Я рекомендую отступая от текущей задачи и работать через несколько хороших PHP и веб-учебники, так что вы можете лучше понять, где и когда вещи случаются.

+0

да, но нежелательное приглашение, я имел в виду некоторый код php ... , но после использования return, его не показывая подтверждение диалога также ... – piyushkantm

+0

@piyushkantm: PHP-код запускается * на сервере *, прежде чем страница даже перейдет в браузер , Повторно не подтверждая 'confirm' после добавления' return': при всем уважении вы, должно быть, допустили ошибку, добавив его. –

+0

Я добавил возврат в код выше, и это тоже в {}. возможно, я совершаю глупую ошибку, но не могу найти, что – piyushkantm

Смежные вопросы