通过AJAX发送JS数组到laravel不工作

时间:2016-02-16 18:10:40

标签: javascript php jquery ajax laravel

我有一个javascript数组,我想通过ajax get方法发送给控制器。

我的javascript看起来像这样:

    var requestData = JSON.stringify(commentsArray);

    console.log(requestData);
    //logs correct json object
    var request;

    request = $.ajax({
        url: "/api/comments",
        method: "GET",
        dataType: "json",
        data: requestData
    });

我可以说我的requestData很好,因为我正在记录它,看起来是正确的。

正在正确访问控制器(我知道这是因为我可以在那里记录信息,我可以返回一个响应,我可以在返回响应后登录我的视图)。

尝试访问requestData时,我得到一个空数组。

我调用的控制器功能如下:

public function index(Request $request)
    {

        Log::info($request);
        //returns array (
        //)
        //i.e. an empty array
        Log::info($request->input);
        //returns ""
        Log::info($_GET['data']);
        //returns error  with message 'Undefined index: data '
        Log::info(Input::all());
        //returns empty array

        return Response::json(\App\Comment::get());
    }

我的回复很好。

如何访问requestData

2 个答案:

答案 0 :(得分:1)

Dave在评论中的解决方案有效:

将ajax请求更改为:

request = $.ajax({
    url: "/api/comments",
    method: "GET",
    dataType: "json",
    data: {data : requestData}
});

答案 1 :(得分:0)

这是使用jQuery在数组中 push 的方式:

function ApproveUnapproveVisitors(approveUnapprove){
    var arrUserIds = [];
    $(".visitors-table>tbody>tr").each(function(index, tr){
        arrUserIds.push($(this).find('a').attr('data-user-id'));
    });

    $.ajax({
        type:'POST',
        url:'/dashboard/whitelistedusers/' + approveUnapprove,
        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
        data: {data : arrUserIds}, 
        success:function(data){
            alert(data.success);
        },
        error: function(e){
            //alert(e.error);
        }
    });
}

这就是我在控制器中访问它们的方式 //批准所有访客 函数ApproveAllWhitelistedUsers(Request $ request){ $ arrToSend = request('data');

    foreach ($arrToSend as $visitor) {
        $vsitor         =    User::findOrFail($visitor);
        $vsitor->update(['is_approved'=> '1']); 
    }
    return response()->json(['success'=>'Accounts approved successfully!']);
}