Похоже, мой ajax работает, но ничего не публикуется

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

// html & jquery
 <select name = "rooftop" id = "rooftop" class = "selectMenu">
            <option value = "">Select an option</option>
            <option value = "Yes">Yes</option>
            <option value = "No">No</option>
        </select>


    <button id = "barButton">click</button>

    <div id = "showBars">

    </div>


    <script type = "text/javascript">

        $(document).ready(function(){

                          $("#barButton").click(function() {
                            var selected = $("#rooftop").val();
                            $.ajax({
                                   type: "POST",
                                   url: "your_php_script.php",
                                   data: {selected: selected},
                                   success: function(){
                                   alert("works");
                                   }

                            });
                          });

// code on your_php_script.php
<?php

require_once("database_connection.php");
$db = db_connect();

 echo "<script type='text/javascript'> alert('works1'); </script>";
    $selected = $_POST["selected"];
    if (isset($selected)){
        echo "<script type='text/javascript'> alert('works2'); </script>";
        $sql = "SELECT bar_name, area, hourStart, hourEnd FROM barInfo WHERE rooftop = 1";
        $result = mysqli_query($connection, $sql);
        if (mysqli_num_rows($result) > 0) {
            echo "<table id='list'><tr><th><h3>Name</h3></th><th><h3> Area</h3></th><th><h3>Happy Hour Times</h3></th></tr>";
            while($row = mysqli_fetch_assoc($result)) {
                echo "<tr> <th> <h6> " . $row["bar_name"] . "</h6> </th> <th> <h6>" . $row["area"] . "</h6> </th> <th> <h6>" . $row["hourStart"] . "-" . $row["hourEnd"] . "</h6> </th> </tr>";
            }
            echo "</table";
        }

    }
db_disconnect($db);

?>


// database connection
function db_connect() {
        global $connection, $servername, $username, $password, $database;
        $connection = new mysqli($servername, $username, $password, $database) or die("Unable to Connect");
        return $connection;
    }

как вы подтвердили, что ajax не отправляет данные? Я думаю, что это должно сделать, без ошибок в этой части. Убедитесь, что у var selected = $("#rooftop").val(); есть какая-то ценность.

Veshraj Joshi 29.05.2019 07:37
if (isset($selectd)) - Где вы определяете $selectd (тоже опечатка)?
M. Eriksson 29.05.2019 07:37
if (isset($selectd)) это правильно?
Jitendra Ahuja 29.05.2019 07:38

Разве не должно быть $selected?

Jitendra Ahuja 29.05.2019 07:38

Кроме того, как сказал @Magnus, где определяется $selectd, если это правильно?

Jitendra Ahuja 29.05.2019 07:40

Ранее я предупреждал $("#rooftop").val(); так что я знаю, что это работает

Mark Jonathas 29.05.2019 07:41

Вы проверили вкладку сети в консоли Chrome?

Phani 29.05.2019 07:41

Я исправил опечатку, и она все еще не работает. переменная $selected должна быть из сообщения ajax. Первоначальное предупреждение также не работает, поэтому я не думаю, что оно подключается к странице php в первую очередь.

Mark Jonathas 29.05.2019 07:44

Вам не нужно брать значение $selected из POST, например: $selected = $_POST['selected'], а затем использовать if (isset($selected))

Jitendra Ahuja 29.05.2019 07:44

Во-первых, попробуйте простой echo ("something"); die; в your_php_script.php в самом начале и проверьте в сети, доходит ли он до этого файла после ajax-запроса.

Jitendra Ahuja 29.05.2019 07:45

на вкладке ответа в сетевом теге xhr отображается первое предупреждение, но почему предупреждение на самом деле не работает?

Mark Jonathas 29.05.2019 07:48

Вы хотите сказать, что он печатает «work1» в сетевой консоли xhr, но предупреждение не появляется?

Jitendra Ahuja 29.05.2019 07:50

@JitendraAhuja, вот что происходит

Mark Jonathas 29.05.2019 07:51

Тем не менее вы не изменили свою переменную в условии if. Пожалуйста, сделайте это if (isset($selected))

Jitendra Ahuja 29.05.2019 07:52

я обновил переменную $select и теперь все отображается в консоли, но не на странице

Mark Jonathas 29.05.2019 07:53

В коде здесь я все еще вижу это if (isset($selectd)). Почему ? Пожалуйста, измените написание выбранного с помощью if (isset($selected))

Jitendra Ahuja 29.05.2019 07:54

Кроме того, это все, что у вас есть в этом файле? Я имею в виду, где определена переменная $connection? Вы включили какой-либо другой файл php, из которого можно использовать $connection?

Jitendra Ahuja 29.05.2019 07:55

я тоже обновил его здесь, но на странице все еще ничего не отображается, хотя оно отображается в консоли

Mark Jonathas 29.05.2019 07:56

@JitendraAhuja я обновил, чтобы показать весь код, который у меня есть на странице php

Mark Jonathas 29.05.2019 07:59

Хорошо, теперь попробуйте echo mysqli_num_rows($result), действительно ли оно больше 0, чтобы войти в это условие if (mysqli_num_rows($result) > 0)

Jitendra Ahuja 29.05.2019 08:00

в консоли пишет ноль

Mark Jonathas 29.05.2019 08:07

Это означает, что либо соединение $ не определено должным образом, либо в базе данных нет такой записи, где barInfo = 1, поэтому она ничего не возвращает.

Jitendra Ahuja 29.05.2019 08:16

Можете ли вы опубликовать код файла database_connection.php здесь? Таким образом, мы можем проверить, есть ли вообще подключение к БД, правильно оно выполнено или нет.

Jitendra Ahuja 29.05.2019 08:18

я создал базу данных в терминале, и я запустил sql в терминале, и он работает

Mark Jonathas 29.05.2019 09:16

Возможно, $connection на самом деле не подключается. У вас есть это в вашем database_connection.php файле? if ($connection->connect_error) { die("Connection failed: " . $connection->connect_error); }

Jitendra Ahuja 29.05.2019 09:23
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
25
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Сначала вы, поскольку вы используете эхо в своем ответе php, вы должны определить, что в вашем запросе Ajax будет ответ.

Итак, ваш Ajax будет заменен чем-то вроде этого

$.ajax({
    type: "POST",
    dataType: "text"
    url: "your_php_script.php",
    data: {
        selected: selected
    },
    success: function() {
        alert("works");
    }
});

Также вы можете пойти на: dataType : 'html'

Jitendra Ahuja 29.05.2019 08:46
Ответ принят как подходящий

Как вы упомянули, количество строк в результате не превышает 0. Это означает, что либо соединение $ не определено должным образом, ИЛИ в базе данных нет такой записи, где barInfo = 1 поэтому ничего не возвращается.

Итак, во-первых, вы должны проверить свой файл database_connection.php, правильно ли выполнено подключение к БД, потому что может случиться так, что этот файл (your_php_script.php) не получает $connection из файла database_connection.php.

Кроме того, как я упоминал ранее, тип данных важен (хотя и не обязателен). Еще более важно добавлять входящие данные в файл apt. элемент, для которого ваша функция успеха должна выглядеть так:

$.ajax({
    type: "POST",
    dataType: "html"
    url: "your_php_script.php",
    data: {
        selected: selected
    },
    success: function(result) {
        alert("works");
        jQuery("#showBars").html(result); 
    },
    error: function(error) {
       alert(error);
    }
});

Что нужно помнить при использовании ajax:

1) Убедитесь, что атрибут dataType правильно определен. Если ничего не указано, jQuery попытается сделать вывод на основе MIME-типа ответа.

2) Функция Success должна быть правильно определена с правильным использованием входящих данных о том, как использовать их в вашем HTML-представлении.

3) Возьмите за привычку использовать функцию error, так как это поможет вам получить ошибки, когда она не входит в функцию Success и имеет какие-либо ошибки.

Пожалуйста, примите ответ и скажите, какой трюк сработал для вас

Jitendra Ahuja 29.05.2019 09:27

добавление типа данных и jQuery("#showBars").html(результат); }, чтобы моя функция успеха заработала. Я обновил свой пост, чтобы показать, где определяется соединение, я не уверен, почему оно влияет на количество строк.

Mark Jonathas 29.05.2019 09:31

Другие вопросы по теме