【问题标题】:Laravel ajax runs but no resultsLaravel ajax 运行但没有结果
【发布时间】:2017-11-17 20:41:49
【问题描述】:

我正在做一个生活搜索,它应该带回结果,ajax 运行,它没有带来任何错误消息,而且我的 pace.js 表明它正在正确地执行 ajax 请求(栏填充到 100%)它只是没有给我带来任何结果。

阿贾克斯:

function search_data(search_value) {
    $.ajax({
        url: '/searching/' + search_value,
        type: 'post',
        success: function(data) {
            alert(data);
            $('#results').append('<div class="alert alert-success"><div>');
            $('#results').html(data);

        },
        error: function(data) { 
            $('#results').html(data.responseText); 
        },
        headers: {
        'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
    }       
    });
}

master.blade.php(导航内的搜索框)

<form action="/searching" method="get" autocomplete="off" class="navbar-form navbar-left">
    <div class="form-group">
        <input type="text" class="form-control" id="search_text" onkeyup="search_data(this.value, 'result');" placeholder="Search">
    </div>
        <div id="result">

        </div>
    </div>
</form>

路线:

Route::post('/searching/{search}', 'SearchController@search');

控制器:

  public function search($search_value) {
    $search_text = $search_value;
    if ($search_text==NULL) {
        $data= Business::all();
    } else {
        $data=Business::where('name','LIKE', '%'.$search_text.'%')->get();
        echo $data;
    }
    //$data = $data->toArray();
    return view('results')->with('results',$data)->render();
    }

//编辑

上面的代码给了我一个警报,所有的数据都是这样的:

[{"id":1,"name":"dasd","type":"3","email":"fsdf@fsdf.com","logo":null,"twitter_business":null,"facebook_business":null,"instagram_business":null,"image":null,"gallery_id":null,"user_id":1,"api_key":null,"created_at":"2017-06-15 11:02:32","updated_at":"2017-06-15 11:02:32"}]<table style="width:100%"> 
<tr> 
<td></td> 
<td>dasd</td> 
</tr> 
</table>

但不附加数据或做 .html

【问题讨论】:

  • 如果在返回视图之前 dd($data) 会发生什么?此外,您可能需要在视图上调用 ->render() 以正确获取编译后的 html。
  • 如果我在返回视图之前执行 dd($data),我什么也得不到,ajax 运行然后什么也没有发生
  • 你需要返回一个json响应,像这样:return response()->json(['data' => view('results')->with('results',$data) ])
  • 你的代码给了我:解析错误:语法错误,意外的 '=>' (T_DOUBLE_ARROW),期待 ',' 或 ')'
  • 忘记括号做数组,编辑了我的评论

标签: ajax laravel laravel-5


【解决方案1】:

像这样从你的路由返回一个 json 响应:

$data = $data->toArray();

return response()->json(['data' => view('results')->with('results',$data)]);

你可能需要先渲染视图,最后调用 render()。

return response()->json(['data' => view('results')->with('results',$data)->render()]);

【讨论】:

  • 给我:试图获取非对象的属性
  • 这是正确的观点('结果')吗?文件结果是否存在于资源/视图中?
  • 是的资源/视图/results.blade.php
  • 然后我会分解方法链接并开始记录每个部分以查看哪里出了问题。在这一点上,它似乎应该可以工作了。
  • 如果有问题是控制器的问题,对吗?
【解决方案2】:

试试这个:

$form = $('#someid');// give this id to the form
$.ajax({
    type: $form.attr('method'),
    url: $form.attr('action'),
    data: $form.serialize(),
    success: function(data, status) {
        $('#results').html(data);
    },
    error: function(data, status) {   
        $('#results').html(data.responseText);
    }
});

【讨论】:

    【解决方案3】:

    试试这个

    public function search($search_value) {
        $search_text = $search_value;
        if ($search_text==NULL) {
            $data= Business::all();
        } else {
            $data=Business::where('name','LIKE', '%'.$search_text.'%')->get();
        }
    
        return response()->json($data);
    }
    

    它将以 JSON 格式为您提供响应

    而且您不需要手动将其转换为数组,因为 Laravel 已经自己完成了...

    而且...如果您测试它,请告诉我...

    编辑:您始终可以在 Chrome 或 Mozilla 开发人员工具(网络部分)中看到 ajax 响应

    【讨论】:

    • 我得到:[object Object]
    • 在 chrome 网络选项卡中我得到:[{id: 1, name: "dasd", type: "3", email: "fsdf@fsdf.com", logo: null, twitter_business: null,…}] 0 : {id: 1, name: "dasd", type: "3", email: "fsdf@fsdf.com", logo: null, twitter_business: null,…}
    • [Object] 0:Object api_key:null created_at:“2017-06-15 11:02:32”电子邮件:“fsdf@fsdf.com”facebook_business:null gallery_id:null id:1 张图片: null instagram_business : null logo : null name : "dasd" twitter_business : null type : "3" updated_at : "2017-06-15 11:02:32" user_id : 1
    • 只需 Console.log(data) 即可获得绘制表格所需的一切!!
    • 你能给我和如何输出这个的例子吗?为什么这不附加? $('#results').append('
      ');
    猜你喜欢
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2011-12-04
    相关资源
    最近更新 更多