无法从laravel中的AJAX调用获取responseText

时间:2018-05-11 14:03:49

标签: php json ajax laravel object

我有一个看起来像这样的AJAX调用:

function getPosts(){
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    $.post("get-posts",
        function(data, status){
            console.log(data);
            console.log(status);
        });
}

在我的 routes / web.php 中,我有:

Route::post('get-posts','PagesController@getPosts');

controller_function看起来像这样:

public function getPosts(){
        $posts = DB::table('users_queries')->get();
        echo json_encode($posts);
    }

但问题是控制台记录一个空字符串。为了确保我正在转换一个php对象,我也调用了gettype($posts);函数并返回了对象。然后我认为问题可能在<script>标记中并尝试了此typeof(data)并且返回了字符串,这确保了数据是字符串。但当我跑console.log(data.length);时,我感到震惊,因为它记录了0.但是我能够做到这样的事情:

public function getPosts(){
    $posts = DB::table('users_queries')->where('id', 1)->first();
    echo $posts->author;
}

一切都很甜蜜,但我无法得到整个json。那我的代码有什么问题呢?我无法弄清楚。请帮忙。

1 个答案:

答案 0 :(得分:0)

以JSON:https://laravel.com/docs/5.6/responses#json-responses

的身份返回您的回复
public function getPosts(){
    $posts = DB::table('users_queries')->get();
    return response()->json([
        'status' => 'success',
        'data'   => $posts
    ]);
}