在Laravel中使用AJAX搜索数据

时间:2015-10-07 07:57:36

标签: php ajax laravel

这是我的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 :(得分:0)

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

<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>

答案 1 :(得分: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')}}',

答案 2 :(得分:0)

在浏览器中使用开发者控制台非常有用,并检查服务器返回的错误。很可能,从上面的代码中,是错误的路由方法(它是为GET定义的,但是您通过AJAX发送了POST请求),以及您没有使用您的数据发送会话令牌这一事实。虽然它有点老,但本文应该可以帮助您开始使用Laravel和AJAX:Using AJAX in Laravel