【问题标题】:Laravel add new record in database returns errorLaravel 在数据库中添加新记录返回错误
【发布时间】:2016-12-12 07:38:58
【问题描述】:

当您单击带有 ajax 的按钮时,我正在尝试添加新的购物车。我的代码如下:

1) 按钮

<a class="checkout-button">checkout</a>

2) 阿贾克斯

$('.checkout-button').on('click', function(){
  var url = '{{route('postcheckout')}}';
  $.ajax({
    type : 'POST',
    url : url,
    headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}' },
    data : {'user_id' : 5},
    success:function(data){
      console.log(data);
    }
  });
});

console.log 和用于测试的数据。

3) 路线

Route::post('/checout',[
    'uses' => 'checkoutController@insertCart',
    'as' => 'postcheckout'
]);

4) 控制器

Use App\delivery_cart;

public function insertCart(Request $request){               
  $user_id = $request['user_id'];
  $cart = new delivery_cart;
  $cart->user_id = $user_id;
  $cart->save();
}

数据库有 2 列 - cart_id (primary,ai) 和 user_id

当我尝试插入新记录时,我收到错误 500(内部服务器错误显示:MethodNotAllowedHttpException。但是,当我从数据库中读取时,它可以工作。我发现了类似的问题,我认为令牌出了点问题,但我无法解决问题。

谁能帮帮我?

【问题讨论】:

  • 嗨..你确定你只通过$_POST方法访问路线吗?我的意思是你可能没有在$_GET 方法中重定向到那条路线,只是询问
  • 这条路线既有get也有post,但我尝试了一条只有post方法的不同路线,但没有成功。
  • 我明白了,因为您没有将$_GET 包含在您的路线中,请将其更改为Route::any(array('post','get'),'/checout',[ 'uses' =&gt; 'checkoutController@insertCart', 'as' =&gt; 'postcheckout' ]); 或仅添加Route::get('/checout',[ 'uses' =&gt; 'checkoutController@insertCart', 'as' =&gt; 'postcheckout' ]);
  • 它有效!但为什么我也必须使用 get 方法?
  • 你可以使用any(array('post','get'))

标签: php ajax laravel token


【解决方案1】:

它会产生该错误,因为该路由在您的路由中没有 get 方法

要解决您必须将该方法注册到您的路线中的问题。

改变你的路线

来自

Route::post('/checout',[
    'uses' => 'checkoutController@insertCart',
    'as' => 'postcheckout'
    ]);

Route::any(array('post','get'),'/checout',[
    'uses' => 'checkoutController@insertCart',
    'as' => 'postcheckout'
    ]);

或者你可以添加

Route::get('/checout',[
    'uses' => 'checkoutController@insertCart',
    'as' => 'postcheckout'
    ]);

【讨论】:

  • 为什么我必须使用get方法?
  • @andrian 因为您在 get 方法中使用该路由,这也是 laravel 的规则,您必须将您使用的每个方法注册到您的路由中
  • 是的,但我只使用结帐路线发帖。这是我不明白的。我只在该路线上使用 ajax 发帖。为什么我也需要获取路线?
  • 嗨。尝试检查网络 F12 并检查方法请求是否真的是post 方法
猜你喜欢
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 2017-03-01
  • 1970-01-01
相关资源
最近更新 更多