Не удается получить php-эхо при использовании AJAX для экрана загрузки

#php #html #ajax #echo

#php #HTML #ajax #эхо

Вопрос:

поэтому я пытаюсь создать загрузочный экран для веб-страницы во время выполнения php-файла, потому что php-файл извлекает данные с сервера MYSQL, и это может занять некоторое время. иногда.

Итак, мой php-файл называется «connect.php » и повторяет html-код и НЕ требует никаких параметров при вызове. Вот простой обзор, чтобы вы поняли, что он делает. Весь файл работает, когда я не использую AJAX и просто включаю его в обычном режиме.

 <?php

if (!$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') die('Invalid request');

//MYSQL-Connection

$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // output data of each row

    while($row = mysqli_fetch_assoc($result)) {
        echo //// Some HTML Code            
        }

} else {
    echo "0 results";
}

mysqli_close($conn);
?>
 

И есть мой index.php где я использую AJAX для вызова php-файла:

 <section id="intro" class="wrapper style1">             
            <style>#loading { display:none; }</style>
            <div id="loading">Test</div>
            <div class="container">
                <span>
                    <script>
                        $( '#loading' ).show();                     
                        $.ajax( {
                            url: 'connect.php',
                            type: 'POST',
                            dataType: 'html',
                            success: function () {
                                $( '.container' ).html();                                   
                                $( '#loading' ).hide();
                            },
                            error: function () {
                                alert( "Something went wrong!" );
                            }
                        } );
                    </script>
                </span>
            </div>
</section>
 

Таким образом, консоль не выдает никаких ошибок и в течение короткого времени (когда php загружается, на экране выводится слово «Test», но затем ничего не происходит, и я не знаю почему. И, как я уже сказал, когда я включаю php-файл, подобный этому <?php include_once('getcelebration.php'); ?> , все работает просто отлично.

Комментарии:

1. Добро пожаловать в Stack Overflow. Мы видим много вопросов от новых участников, и часто им не хватает большого количества информации. У вас нет. Отличный вопрос! Ваша проблема в том, что вы не обрабатываете полученные данные success . Смотрите: api.jquery.com/jquery.ajax Обратите внимание на data аргумент в функции.

Ответ №1:

Вам не хватает data аргумента в success функции, поскольку это функции обратного вызова, они возвращают данные request_url , которые передаются connect.php из вашего запроса AJAX.

Попробуйте это:

 success: function (data) {
    console.log(data);
    $( '.container' ).html(data);
    $( '#loading' ).hide();
}
 

Комментарии:

1. Как насчет фактического помещения HTML в контейнер?

2. Да, извините, пропустил это.

3. Нет проблем. Теперь Sigmar должен иметь возможность работать с этим.