JQuery .post () возвращает HTML в таблицу

0

У меня есть форма с двумя полями ввода. Песня и художник. Когда кнопка поиска нажата, она использует функцию JQuery .post() чтобы отправить данные на страницу PHP и вернуть результаты на страницу.

Вот мой код JavaScript:

<script>
    $(function() {

        $("#submitSearch").bind("click", function() {
            var songTitle = $("#song").val();
            var artistName = $("#artist").val();

            $.post("getSearchResults.php", {
                artist: artistName, 
                song: songTitle
            },
            function( data, status ) {
                $("#searchResults tbody").last().append( data );
            });
        });
    });
</script>

Цель состоит в том, чтобы поместить результаты в <tbody> таблицы "searchResults".

<table id="searchResults">
    <thead>
        <tr>
            <th>Title</th>
            <th>Artist</th>
            <th>Album</th>
            <th>Add To List</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>

Однако, похоже, он не вставляет результаты в таблицу.

Это не до тех пор, пока я не поставлю сообщение alert() в Javascript Code, которое оно покажет.

<script>
    $(function() {

        $("#submitSearch").bind("click", function() {
            var songTitle = $("#song").val();
            var artistName = $("#artist").val();

            $.post("getSearchResults.php", {
                artist: artistName, 
                song: songTitle
            },
            function( data, status ) {
                $("#searchResults tbody").last().append( data );
            });

            alert("test");

        });
    });
</script>

Когда я увольняю предупреждение "тест", он помещает результаты в таблицу и очень быстро исчезает.

Что мне здесь не хватает? Пожалуйста, помогите мне! Я в тупике. Заранее спасибо.

Теги:
.post

1 ответ

2
Лучший ответ

Попробуй это...

<script>
    $(function() {

        $("#submitSearch").bind("click", function(e) {
            e.preventDefault();
            var songTitle = $("#song").val();
            var artistName = $("#artist").val();

            $.post("getSearchResults.php", {
                artist: artistName, 
                song: songTitle
            },
            function( data, status ) {
                $("#searchResults tbody").last().append( data );
            });
        });
    });
</script>

Я добавил параметр события в функцию щелчка и e.preventDefault(). это останавливает отправку на самом деле, которая перезагружает вашу страницу. Кроме того, в зависимости от того, какую версию jQuery вы используете, вы можете использовать on() вместо bind(). (Это точно такой же синтаксис, как указано выше).

  • 0
    Да, это сработало. Спасибо большое за помощь. Это имеет смысл сейчас. Текстовые поля и кнопка ввода находятся внутри <form> , так что это имеет смысл.
  • 0
    Нет проблем - рад помочь :)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню