ajax дважды загружает данные из базы данных с помощью laravel php

0

привет, я пытаюсь загрузить данные из базы данных с помощью ajax. но данные загружаются дважды на страницу html.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>

    $('button').click(function(){
        $.ajax({
            url:"{{route('zaeemajax')}}",
            method:"get",
            datatype:"json",
            success:function(response){
                 console.log(response);
                var tabledata="";
                $.each(response,function(key,value){
                 tabledata +="<tr>";
                 tabledata +="<td>"+value.name+"</td>";
                 tabledata +="<td>"+value.price+"</td>";
                 tabledata +="<td>"+value.category+"</td>";
                 tabledata +="</tr>";
                
                });
                  $('#show tbody').append(tabledata);
            }


        });

    });
</script>

в моем контроллере я возвращаю данные о продукте как json

public function showallpro()
    {
        $product=Product::all();
        return response()->json($product);

    }

в таблице продуктов сейчас есть только два поля, но всякий раз, когда я пытаюсь получить данные из базы данных, они показывают одни и те же данные дважды

вот html-код, в котором я пытаюсь показать данные из базы данных

<table id="show" style="border: 1px solid black;">
    <tr>
        <th>name</th>
        <th>Price</th>
        <th>Category</th>

    </tr>
    <tbody>

</tbody>
</table>

<button type="">Show Data</button>



Изображение 43

  • 0
    У вас случайно есть два элемента, которые соответствуют селектору $('#show tbody') ?
  • 0
    Используйте .html(tabledata) вместо .append(tabledata)
  • 0
    При использовании .html (tabledata) вместо .append (tabledata) результат остается прежним, одни и те же данные загружаются дважды.
  • 0
    нет, у меня нет двух селекторов с идентификатором #show.
  • 1
    используйте $('button').one("click",()=>{ //ajax code here }); или $('button').once("click",()=>{ //ajax code here }); . Но вы должны использовать другой селектор, например, элементы «button» могут быть более одного на одной странице, вместо этого используйте Id или класс кнопки.
  • 0
    Проверьте, что добавляется с помощью console.log(tabledata); . Это скажет вам, петля это или что-то еще.
  • 0
    также добавьте теги <thead></thead>
Теги:
CodeFix

1 ответ

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

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

я изменил это

$ ('# показать'). append (данные таблицы);

вместо

$ ('# показать тело'). append (tabledata);

Поделиться
Источник

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

CodeFix
Цитата дня

"Завидую тестировщикам: все хотят с ними дружить."

Эндрю Таненбаум