почему файлы `head` не загружаются после ajax-запроса - PullRequest
0 голосов
/ 16 января 2019

Чтобы отправить эхо из php-скрипта, я использую ajax. Эхо приходит в div с классом echo. Ниже моя структура HTML:

<body>
<div class="container-fluid">
   <div class="header-fixed">
       <div class="echo"><!-- in here coming the echos from php --></div>

Мой Аякс выглядит так:

$.ajax({
            url: "actions.php",
            type: "POST",
            data:  new FormData(this),

            contentType: false,
            processData: false,
            success: function(data) {
            $(".echo").html(data);          

            },

       });

Это мой php скрипт actions.php :

if($_POST['deletefile']) {
     unlink($_POST['deletefile']);
     echo  '<span class="closebtn">CLOSE</span><br />';
     echo basename($_POST['deletefile']) . ' successful deleted';
     echo '<script>
           $('.closebtn').click(function(){
           $(this).parent('.echomessage').fadeOut(500);
           });
           </script>';  
}

Проблема: маленькому js в эхо нужен файл ядра jquery, который находится в head. Но кажется, что он больше не загружается, потому что при нажатии на кнопку ЗАКРЫТЬ эхо больше не исчезает.

положить файл ядра также в эхо, как показано ниже:

echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>';

отлично работает. Но я думаю, это не так, как должно быть. Как я могу решить эту проблему, не отправляя файл ядра снова в эхо? Потому что он уже в head загружен ...

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Что по этому поводу:

 success: function(data) {
          $.getScript( "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js" ); //load core file
          $(".echo").html(data);          

        },
0 голосов
/ 16 января 2019

Элемент, внутри которого вы вводите HTML-код, - <div class="echo">, где ваш код jQuery ищет что-то еще:

$(this).parent('.echomessage')
//              ^---- should be ".echo" 

Сказав это, я бы порекомендовал вам пересмотреть сценарий на стороне сервера, чтобы он возвращал ответ в кодировке JSON, и переместить логику его отображения в событие success следующим образом:

$.ajax({
    url: "actions.php",
    type: "POST",
    data: new FormData(this),
    success: function(response) {
        // response could be something like {"success": true, "message": "aaa.txt deleted"}
        $("<span class='closebtn'>CLOSE</span>")
            .appendTo(".echo")
            .after("<br>", response.message)
            .on("click", function() {
                $(this).parent(".echo").fadeOut(500);
            });
        $(".echo").html(data);
    },
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...