как сделать запрос несколько раз без жесткого обновления с помощью ajax - PullRequest
0 голосов
/ 29 декабря 2018

Я отправляю запрос через ajax, чтобы удалить файл.В первый раз ajax обрабатывает запрос, но во второй раз не anymorte.я получил "жесткое обновление"

Это мой код:

<?php
if(isset($_POST['deletefile'])) {

        // if is directory -> remove dir
        if(is_dir($_POST['deletefile'])){

        removeDirectory($_POST['deletefile']);      
        exit;

        }
        // else (must be a file) -> unlink file
        else {

        unlink($_POST['deletefile']);
        exit;
        }

}
?>
<div class="myFiles">
 <form class="sfmform" method="post" action="">
        <input type="hidden" name="deletefile" value="<?php echo $dir.'/'.$file; ?>" />
        <input type="submit" class="sfmdelete"  name="delete" value=" " />
 </form> 
 <script>
  $(".sfmform").on('submit',(function(e) {
        e.preventDefault();
            $.ajax({
            url: "",
            type: "POST",
            data:  new FormData(this),

            contentType: false,
            processData: false,
            success: function(response)
            {           
            $('.myFiles').load(document.URL +  ' .myFiles');
            },

       });

    }));
 </script>

 </div> <!-- END myFiles -->

Чтобы сразу увидеть, когда мой файл был удален, я использую эту строку $('.myFiles').load(document.URL + ' .myFiles');

Первый запрос на удаление проходит нормально, но второй: он сильно обновляется и умирает в цикле php.Я надеялся, что после exit в php исполняется строка $('.myFiles').load(document.URL + ' .myFiles');, но во второй раз она больше не загружает <div class="myFiles>.

Как я могу заставить это работать должным образом?

Даже когда я помещаю js в готовый обработчик, он не работает!Причина, по которой я использую exit в php: в противном случае <div class="myFiles"> появляется 2 раза друг над другом

1 Ответ

0 голосов
/ 29 декабря 2018

Вы изменили html из .myFiles, так что все в нем во второй раз генерируется динамически.поэтому вам нужно Привязка событий к динамически создаваемым элементам? .. изменить

$(".sfmform").on('submit',(function(e) {

на

$(document).on('submit' , ".sfmform" , (function(e) {

Примечание: дляя не рекомендуется использовать $.ajax с тем же файлом url: лучше для меня сделать отдельный файл

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