【问题标题】:Pass data from ajax to laravel 5.1 Controller in order to save to mysql?将数据从 ajax 传递到 laravel 5.1 Controller 以保存到 mysql?
【发布时间】:2017-04-09 07:02:58
【问题描述】:

我需要将数据从 jquery(版本 1.9.1)传递到我的控制器(Laravel 5.1),然后将其保存到 mysql。

如何做到这一点并传递变量槽?到目前为止它没有工作。更多详情,请咨询我。

jquery:

 $(".tic").click(function(){
    var slot = $(this).attr('id');
    playerTurn(turn, slot);
    $.ajax({
        url: '/addhistory',
        type: 'POST',
        data: { _token: {{ csrf_token() }}, moves: slot },
        success: function()
        {
            alert("Data has been saved successfully!");
        }
    });
 });

控制器:

 public function addhistory(Request $request)
    {
        $history = new History();
        $history->game_id = Game::orderBy('id', 'desc')->first()->id;
        $history->moves = $request->moves;
        $history->save();
        return redirect()->back();
    }

路线:

Route::post('/addhistory', 'GameController@addhistory');

控制台错误:

(index):198 Uncaught ReferenceError: HAmcYRScL9puItnUGbd2kHx.... is not defined
    at HTMLAnchorElement.<anonymous> ((index):198)
    at HTMLAnchorElement.dispatch (191.js:3)
    at HTMLAnchorElement.v.handle (191.js:3)

191.js文件是jquery 1.9.1的版本

【问题讨论】:

  • 你试过在{{ csrf_token() }}周围加上单引号吗?
  • 试试_token: '{{ csrf_token() }}'。因为 CSRF 可能包含一些算术运算符,JavaScript 会尝试对其求值。
  • localhost:8000/addhistory 500(内部服务器错误)我收到此错误
  • 你能向堆栈跟踪显示一个 get exact 错误吗?
  • 您的脚本在客户端运行良好。请检查服务器端的错误。你可以在storage/log/laravel.log看到它

标签: php jquery mysql ajax laravel


【解决方案1】:

您可以使用此代码,它可能有效

 $(".tick").click(function (event) {
    event.preventDefault();
    $('.loading').show();
    var form = $(this);
    var data = new FormData($(this)[0]);
    var url = form.attr("action");
    $.ajax({
        type: "POST",
        url: url,
        data: data,
        async: false,
        cache: false,
        contentType: false,
        processData: false,
        success: function (data) {
           alert("Data has been saved successfully.");
        },
        error: function (xhr, textStatus, errorThrown) {
            alert(errorThrown);
        }
    });
    return false;
});

【讨论】:

    【解决方案2】:

    试试这个代码-

    $(".tic").click(function(){
      var slot = $(this).attr('id');
      var token= $("input[name='_token']").val();
      playerTurn(turn, slot);
      $.ajax({
          url: '/addhistory',
          type: 'POST',
          data: { '_token': token, 'moves': slot },
          success: function()
          {
              alert("Data has been saved successfully!");
          }
      });
    });
    

    在您的控制器中,您不需要返回重定向,因为请求是异步的。所以我回归真实。确保在控制器顶部包含 History 模型

     public function addhistory(Request $request)
        {
            $game_id=Game::orderBy('id', 'desc')->first()->id;
            History::create([
                            'game_id'=>$game_id,
                            'moves'=>$request->moves
            ]);
            return true;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 2015-06-30
      • 1970-01-01
      相关资源
      最近更新 更多