отправить запрос ajax без данных, проверка PHP установлена - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть следующий код, который работает в данный момент.Я хочу удалить URL и обработать запрос ajax на той же странице.Поскольку я не отправляю никаких данных, как я могу проверить php, когда моя функция ajax готова отправить запрос в базу данных?

Я использую jquery mousedown для удержания кнопки, затем после 1во-вторых, пользователь получает запрос на удаление.Если пользователь удерживает кнопку 5 в списке, он удалит строку 5 в таблице mysql, кнопка 10 удалит строку 10 и т. Д.

$("#outter_div_5").mousedown('#button_5', function(e) {
        clearTimeout(this.downTimer);
        this.downTimer = setTimeout(function() {
            var prompt_user = prompt('Enter "e" to Edit \nEnter "d" to Delete');
            if (prompt_user== "d")
                    {
                        $.ajax({
                            url: './ajax/5/delete.php', // <-- I want to remove this line and process this ajax request on the same page
                            type:'POST',
                            data: {},
                            success:function(result){
                                    $("outter_div_5").fadeOut(125);
                            },
                            complete:function(data){
                                $.ajax({
                                    url:'reload_table.php',
                                    method:'POST',
                                    success:function(data){
                                        // reload javascript variables and html table
                                        $("#my_table").html(data);
                                    }
                                });
                            }
                        });
                    }
        }, 1000);
    }).mouseup(function(e) {
        clearTimeout(this.downTimer);
    });

И моя страница delete.php представляет собой простой запрос mysql, яЯ не использую php isset, так как я не передаю никаких данных.

include_once './includes/db.inc.php';

$sql = "UPDATE my_table SET row = '' WHERE id = '5' ";
mysqli_query($conn,$sql);

Мне нужно создать php isset, чтобы я мог обработать этот ajax-запрос на той же странице.Как я могу это сделать?

<?php
   if( isset($_POST['']) ){
      $sql = "UPDATE my_table SET row = '' WHERE id = '5' ";
      mysqli_query($conn,$sql);
   }
?>    

<script>
$("#outter_div_5").mousedown('#button_5', function(e) {
    clearTimeout(this.downTimer);
    this.downTimer = setTimeout(function() {
        var prompt_user = prompt('Enter "e" to Edit \nEnter "d" to Delete');
        if (prompt_user== "d")
                {
                    $.ajax({
                        url: './ajax/5/delete.php', // <-- I want to remove this line and process this ajax request on the same page
                        type:'POST',
                        data: {},
                        success:function(result){
                                $("outter_div_5").fadeOut(125);
                        },
                        complete:function(data){
                            $.ajax({
                                url:'reload_table.php',
                                method:'POST',
                                success:function(data){
                                    // reload javascript variables and html table
                                    $("#my_table").html(data);
                                }
                            });
                        }
                    });
                }
    }, 1000);
}).mouseup(function(e) {
    clearTimeout(this.downTimer);
});
</script>

1 Ответ

0 голосов
/ 20 февраля 2019

Основное преимущество запроса HTTP (с AJAX в вашем случае) заключается в том, что вам не нужно перезагружать страницу или перенаправлять пользователя для передачи информации на сервер.Некоторые другие преимущества и дополнительную информацию можно найти здесь .Обратите внимание, что php-код запускается до запуска любого из ваших javascript.

Если вы не хотите использовать HTTP-запрос, у вас есть несколько решений.Вот мое:

Вместо такого HTTP-запроса вы можете использовать form с method="POST" ( прочитать все об этом ), которое использует запрос перед отправкой:

$("#delete_button").click(function( event ){
  event.preventDefault();
  var prompt_user = prompt('Enter "e" to Edit \nEnter "d" to Delete');
  if (prompt_user == "d") {
    console.log("submitted");
    //$("#myForm").submit();
  }else if( prompt_user == "e" ) {
    console.log("editing");
    // Add your actions for editing the thing you want to edit.
  }else {
    console.log("aborted");
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>

<form id="myForm" action="" method="POST">
  <!-- You can add inputs here to add to your POST 
       This data can be read when the form is submitted and the page is consequently reloaded. -->
  <input id="delete_button" type="submit" value="delete">
</form>

Однако, если честно, я бы придерживался HTTP-запроса, поскольку это может обеспечить более удобное взаимодействие с пользователем.Я понимаю, что вы новичок, поэтому, пожалуйста, не стесняйтесь задавать вопросы, если вы чего-то не понимаете, мы все были там (и, возможно, я все еще там: p).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...