【问题标题】:Laravel: sending JSONArray from ajax to Controller error: Undefined variable myDataLaravel:将 JSONArray 从 ajax 发送到控制器错误:未定义的变量 myData
【发布时间】:2020-01-08 09:26:29
【问题描述】:

我通过 Ajax 向控制器发送 JSONArray。它正在返回

“500 内部服务器错误”

在控制台中检查 URL 的响应后,我发现我的数组未定义:

消息-未定义变量:myData

异常-ErrorException

文件-C:\xampp\htdocs\EDO_Roster\app\Http\Controllers\EventController.php

这是我的 Ajax 代码:

var myJson = JSON.stringify(myData);
      var button = document.getElementById("submit");
      button.addEventListener("click", function(event){

        $.ajax({
              headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
              },
              type: "POST",
              url: "{{route('postEvent' , 'myJson')}}",
              data: {myData:  myJson},
              contentType: "application/json; charset=utf-8",
              dataType: "json",
        }).done( function(data){
            console.log('Ajax was Successful!');
            console.log(data);
        }).fail(function(){
            console.log('Ajax Failed');
        });
      });

函数路径:

Route::post('randomPost', 'EventController@postEvent')->name('postEvent');

这是我的控制器代码

public function postEvent(Request $request)
    {
        $events = DB::table('auto_events')
                ->insert(array(
                      'edo_id' => $myData->edo_id,
                      'strat' => $myData->start,
                      )
                    );

      return response($events, 200);          
    }

我已经尝试过堆栈溢出时提供的几种解决方案,例如更改 Ajax 调用,多次检查我的路由。

【问题讨论】:

  • 您正在尝试访问未定义的函数中的 $myData,您必须从 $request 获取变量,即 $request->input('edo_id');

标签: json ajax laravel


【解决方案1】:

你还没有在你的控制器中定义变量$myData,这就是你的控制器出现这个错误的原因,你应该从$request获取输入数据

试试下面的方法

public function postEvent(Request $request)
{
    $myData = $request->all();
    $events = DB::table('auto_events')
            ->insert(array(
                  'edo_id' => $myData->edo_id,
                  'strat' => $myData->start,
                  )
                );

  return response($events, 200);          
}

【讨论】:

  • 感谢这解决了问题,但现在我遇到另一个错误“尝试获取非对象的属性 'edo_id'”,我认为这与 JSON 本身有关。
  • 我认为$request 变量包含数组而不是对象,您可以这样尝试吗? 'edo_id' => $myData['edo_id']
  • 数组是这样的:[{"id":1,"edo_id":4,"start":"2019-09-08"},{"id":2,"edo_id" :2,"开始":"2019-09-09"}]
  • 哦,好吧,这意味着您应该在循环中添加插入查询
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
相关资源
最近更新 更多