首页 文章

在Laravel中使用AJAX搜索数据

提问于
浏览
1

这是我的ajax代码 . 我想在文本框中键入内容,数据库的结果应显示在表格中 .

<script type="text/javascript">
  function retrieve(){
    var country = $('#country_name').val();
    $.ajax({
      type: "POST",
      url: '{{route('dataAjax-country')}}',
      data: {country:country},
      success: function(result){
        $('#ajaxtable').html(result);
      }
    });
  }
</script>

但是当我在文本框中输入时数据没有改变 . 我有一个文本框和一个像这样的表:

{!! Form::text('country_name', '', array('id'=>'country_name', 'onkeyup'=>'retrieve()')) !!}

<tbody id="ajaxtable">
  @foreach($results as $result)
    <tr>
      <td>{{$result->id}}</td>
      <td>{{$result->country_name}}</td>
    </tr>
  @endforeach
</tbody>

这是我的路线代码,也许我的路线不足?:

Route::get('asd', array(
        'as' => 'dataAjax-country', 'uses' => 'CompaniesController@dataAjaxCountry'));

我的控制器包含将在表格中显示的AJAX脚本:

public function dataAjaxCountry()
{
    echo "<tr><td>asdsad</td></tr>";
}

3 回答

  • 0

    您正在发送一个帖子请求,但是您在路线上使用了get,您需要将 type 更改为 get ,这对记录任何错误也很有用,请尝试:

    <script type="text/javascript">
      function retrieve(){
        var country = $('#country_name').val();
        $.ajax({
          type: "get",
          url: '{{route('dataAjax-country')}}',
          data: {country:country},
          success: function(result){
            $('#ajaxtable').html(result);
          },
          error: function(result){
            console.log(result);
          }
        });
      }
    </script>
    
  • 0

    有几点,您正在尝试POST到已定义为GET路由的控制器 . 以下应该有效

    <script type="text/javascript">
      function retrieve(){
        var country = $('#country_name').val();
        $.ajax({
          type: "GET",
          url: '/asd',
          data: {country:country},
          success: function(result){
            $('#ajaxtable').html(result);
          }
        });
      }
    

    你需要包装 <tbody> insde <table>

    因为路线不起作用我改变了这个 url: '{{route('dataAjax-country')}}',

  • 0

    在浏览器中使用开发人员控制台非常有用,并检查服务器返回的错误 . 很可能,从上面的代码中,是错误的路由方法(它有点旧,本文应该可以帮助您开始使用Laravel和AJAX:Using AJAX in Laravel

相关问题