Javascript подтвердить с помощью функции PHP после - PullRequest
4 голосов
/ 30 декабря 2011

Я бы хотел, чтобы окно подтверждения появлялось, когда пользователь нажимает «удалить», чтобы удалить запись.

Что-то вроде:

<script language="JavaScript"  type="text/javascript" >

function confirmDelete() {
    if(confirm("Would you like to delete the selected products?")) {
        <?php 
            $allCheckBoxId = $_POST['checkbox'];
            array_map ('mysql_real_escape_string', $allCheckBoxId);
            $ids = implode(",", $allCheckBoxId);
            $sql = "DELETE FROM products WHERE `id` IN ($ids)";
            mysql_query($sql);
        ?>
    }
}

</script>

С помощью щелчка мыши:

echo "<input type='submit' name='submit' value='Delete'  onclick='confirmDelete()' />";

Но я знаю, что невозможно использовать Javascript и PHP вместе, как это.Есть ли другой способ сделать это?Может быть, у PHP есть свой вид подтверждения?Пожалуйста, дайте любые идеи!

Спасибо.

Ответы [ 5 ]

11 голосов
/ 30 декабря 2011

В этом случае довольно легко использовать AJAX.Просто поместите ваш PHP в файл scriptDelete.php и убедитесь, что вы передаете правильные аргументы и их значения в свойстве data.В этом примере я просто передаю id из 5 .

<script type="text/javascript">

    function confirmDelete() {
        if (confirm('Are you sure you want to delete this?')) {
            //Make ajax call
            $.ajax({
                url: "scriptDelete.php",
                type: "POST",
                data: {id : 5},
                dataType: "html", 
                success: function() {
                    alert("It was succesfully deleted!");
                }
            });

        }
    }
</script>

<input type='submit' name='submit' value='Delete'  onclick='return confirmDelete()' />

Другим способом было бы отправить форму обратно на свою собственную страницу, например:

<form method="post" action="yourpage.php">
    <input type="submit" name="submit" value="delete" onclick="return confirm('Are you sure you want to delete this?')" />
</form>

Итак, вы просто отправляете форму обратно на yourpage.php, и в верхней части этой страницы вы делаете что-то вроде:

<?php

   //Means the form was submitted
   if ($_POST['submit']) {
      $id = $_POST['idToDelete'];
      $query = "DELETE FROM products WHERE id = " . mysql_real_escape_string($id);
      mysql_query($query) or die(mysql_error());
   }
?>
2 голосов
/ 30 декабря 2011

Вы должны переместить событие в форму и использовать onsubmit = "verifyDelete ()".Если вы вернете false в функции ConfirmDelete, отправка формы отменяется.Если вы вернете true, форма будет отправлена ​​как обычно, и вы сможете обработать ее как обычную форму на стороне сервера.

<script type="text/javascript">
function confirmDelete() {
    return window.confirm("Are you sure you want to delete this record?");
}
</script>

<form action="myDelete.php" onsubmit="confirmDelete()">
    ....inputs
    <input type="submit" name="submit" value="Delete">
</form>

Тогда на сервере будет иметься регулярный код обработки

1 голос
/ 04 ноября 2013

Простой способ подтверждения, вместо создания совершенно новой функции. Сделай это

<input type="submit" name="Delete" onClick='return confirm("Sure you want Delete this Page?")' />

это точно так же ответит.

1 голос
/ 30 декабря 2011

Самый простой способ - сделать функцию javascript перед отправкой.Если вы нажмете на false, возврат будет ложным, и он не будет отправлен:

<form action="something.php" onSubmit="return confirm('Are you sure?');" method="post">
// Fields
// Fields
<input type="submit" name="Submit" class="button" value="Submit">
</form>
0 голосов
/ 30 декабря 2011

Ajax.Поместите ваш php в отдельный файл и используйте ajax, чтобы отправить ему идентификатор, который вы хотите использовать в своем запросе.Я рекомендую jQuery .post

...