如何使用带有AngularJS和Laravel的$ http.delete将数组传递给PHP?

时间:2016-10-26 19:40:39

标签: php angularjs laravel

在我的AngularJS服务中,我有一个id的数组,我想传递给PHP服务器,因此它可以删除它们,但不知怎的,我继续得到 500 /内部服务器错误响应。

在我的服务器日志中,它说该请求缺少一个参数,这意味着传递给服务器的操作不成功。

我的服务中有这样的事情:

destroySelected : function (ids) {
  // console.log(ids);
  // return $http.delete('/posts/destroySelected', ids);
  return $http({
    method: 'DELETE',
    url: '/posts/destroySelected/',
    headers: {'Content-Type': 'application/json;charset=utf-8'},
    data: {ids : ids}
  });
}

对于我的php控制器,我有这个:

public function destroySelected($ids) {
    echo "<pre>" . var_export($ids, true) . "<pre>";
    die;
    return response()->json(Post::get());
}

我的路线:

Route::delete('posts/destroySelected/', 'PostController@destroySelected');

它是空的,但我想在我做其他任何事情之前仔细检查它是否成功通过。

有人可以告诉我这里出了什么问题吗?

1 个答案:

答案 0 :(得分:1)

您没有向控制器提供任何数据:)

您有:url: '/posts/destroySelected/'data: {ids : ids}

因此,您的最终网址将为/posts/destroySelected/?ids=1(例如)

您的请求中的参数$ ids需要url route参数(例如route /posts/destroySelected/{ids})而不是查询参数(_GET / _POST)

解决方案:

        return $http({
            method: 'DELETE',
            url: '/posts/destroySelected/' + ids,
            headers: {'Content-Type': 'application/json;charset=utf-8'}
        });

要获取查询参数(_GET),您可以使用:

<?php
public function destroySelected(Request $request) {
    $ids = $request->input('ids'); // will get the value of $_REQUEST['ids'] ($_GET or $_POST)
    // var_dump($request->all()); for all values

    echo "<pre>" . var_export($ids, true) . "<pre>";
    die;
    return response()->json(Post::get());
}