首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从AngularJS到Laravel的POST请求

从AngularJS到Laravel的POST请求
EN

Stack Overflow用户
提问于 2017-09-20 00:03:25
回答 1查看 929关注 0票数 0

我试图从我的AngularJS-app发送一个POST请求到一个独立的Laravel后端(在localhost上),但无法弄清楚X-CSRF-TOKEN之类的东西。至少我认为这就是问题所在。

我总是在控制台中收到这个错误:

代码语言:javascript
复制
POST http://localhost/public/drinks 419 (unknown status)

我已经在我的AngularJS应用程序的index.html中添加了以下内容:

代码语言:javascript
复制
<script>angular.module("myCaffeineIntake").constant("CSRF_TOKEN", '{{ csrf_token() }}');</script>

下面是我的控制器中的代码:

代码语言:javascript
复制
$scope.answer = function(newdrink, CSRF_TOKEN) {
     newdrink._token = CSRF_TOKEN;
     newdrink._method = "post";

     $http({
         method : "POST",
         url : "http://localhost/public/drinks",
         data : newdrink
     }).then(function mySuccess(response) {

     }, function myError(response) {
         console.log("error");
     }
 );

还有我的Laravel-controller:

代码语言:javascript
复制
public function store(Request $request)
{
    $drink = new Drink;
    $this->validate(request(),[
        'Name' => 'required',
        'Size' => 'required',
        'Caffeine' => 'required',
        'Url' => 'required'
    ]);

    Drink::create([
        'Name' => request('Name'),
        'Size' =>  request('Size'),
        'Caffeine' => request('Caffeine'),
        'Amount' => 0,
        'Url' => request('Url'),
        'created_at' => time(),
        'updated_at' => time(),     
    ]);
}

我错过了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-09-20 02:01:45

您不会返回该请求中的任何内容。

代码语言:javascript
复制
public function store(Request $request)
{
    //$drink = new Drink; //Don't know why this is here like that, so removed it
    $this->validate(request(),[
        'Name' => 'required',
        'Size' => 'required',
        'Caffeine' => 'required',
        'Url' => 'required'
    ]);

    $drink = Drink::create([
        'Name' => request('Name'),
        'Size' =>  request('Size'),
        'Caffeine' => request('Caffeine'),
        'Amount' => 0,
        'Url' => request('Url'),
        'created_at' => time(),
        'updated_at' => time(),     
    ]);
    //Maybe add the following
    return response()->json([
       'drink' => $drink,
    ]);
}

让我解释一下我刚才做了什么,我将var $drink赋值给新Drink的创建,以便它返回新的Drink模型,然后将其作为json响应传递,现在您可以在success回调中捕获它

编辑:我对您的角度控制器做了一些更改,只需在$scope中捕获所有表单数据,将ng-model="drink.changeThisToAnyName"放入表单的每个input中,然后将其作为JSON传递给ajax post,请参见示例:

代码语言:javascript
复制
$scope.answer = function() {

     $http.post('/public/drinks', {
        data: $scope.drink,
    }).then(function mySuccess(response) {

     }, function myError(response) {
         console.log("error");
     }
 );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46305028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档