通过 AJAX 将 JS 数组发送到 laravel 不起作用


Sending JS array via AJAX to laravel not working

我有一个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

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

将 ajax 请求更改为:

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

以下是使用 jQuery 在数组中推送项目的方式:

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);
        }
    });
}

这就是我在控制器中访问它们的方式批准所有访客函数批准所有白名单用户(请求$request({$arrToSend = 请求("数据"(;

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