【问题标题】:laravel- request empty in controller using ajaxlaravel-使用ajax在控制器中请求为空
【发布时间】:2020-04-01 18:08:29
【问题描述】:

我正在使用 laravel 6.0 并且正在构建 crud 应用程序。我在视图文件中有以下 jquery 代码

function updaterecord(id) {
        $('#modalupdate').on('submit', function (e) {
            e.preventDefault();
            $.ajax({
                url: 'update/'+id,
                method: 'post',
                success: function (res) {
                    console.log(res);
                }
            })
        });
    }

这是控制器中的代码

public function update(Request $request, $id='') {
            $country = $request->input('countryname');
            $sortname = $request->input('sortname');
            $phonecode = $request->input('phonecode');
            //return $country.$sortname.$phonecode;
        return $request;
//            DB::table('countries')->where('id',$id)->update(
//                [
//                    'name' => $country,
//                    'sortname' => $sortname,
//                    'phonecode' => $phonecode,
//                ]);
    }

问题是 $request 返回空。 如果我不使用 ajax,那么我将获得所有输入值。但我不知道为什么它不适用于 ajax 请求。我也在视图文件中添加了这一行

        headers: {
            'X-CSRF-TOKEN': '{!! csrf_token() !!}'
        }
    });

请帮我解决这个问题

【问题讨论】:

  • 但是您的 ajax 调用没有发送任何数据...¯\_(ツ)_/¯
  • 打开浏览器控制台,查看网络选项卡上的错误,如果存在肯定返回错误。

标签: ajax laravel


【解决方案1】:

您没有传递表单数据。试试这个:

function updaterecord(id) {
    $('#modalupdate').on('submit', function (e) {
        e.preventDefault();
        $.ajax({
            url: 'update/' + id,
            method: 'post',
            data: $(this).serialize();
            success: function (res) {
                console.log(res);
            }
        })
    });
}

【讨论】:

  • 我添加了数据:$(this).serialize() 但我得到空白输出
  • 检查控件是否真的到达提交处理程序,然后检查网络选项卡中的标题正文是否正在发送表单数据。
  • 没有。在请求标头菜单 cookie、x-csrf-token、x-requested-with 存在但我没有看到输入参数
  • @SanketKulkarni,您需要显示您正在尝试或至少正确的确切代码。很难猜出你在用什么。
  • @jogesh_pi 好的,我已将代码上传到ge.tt/4SBchyz2,请下载并告诉我问题出在哪里...请帮助我
【解决方案2】:

laravel 默认不发送原始数据,您必须将数据转换为 json,最佳做法是:

return response()->json([
   'data' => $request  
]);

【讨论】:

    【解决方案3】:

    例如,试试这个代码,看看你是否得到任何提示。

       function updaterecord(id) {
        $('#modalupdate').on('submit', function (e) {
         e.preventDefault();
          $.ajax({
            url: 'update/' + id,
            method: 'post',
            data: {'countryname' : 'India','sortname' : 'Sort Name', 'phonecode' : '022'};
            success: function (res) {
                console.log(res);
            }
          })
      });
      }  
    

    看看你是否得到任何回应。

    【讨论】:

    • 是的..我得到了所有的值..但是如果我写数据为什么它不起作用:$(this).serialize();请告诉我
    • @SanketKulkarni 尝试使用表单 ID,$('#form_id').serialize()'。不知道为什么$(this).serialize()' 不起作用,但如果我能弄清楚一些事情,我会发布。
    猜你喜欢
    • 2017-02-26
    • 2018-03-05
    • 2015-03-04
    • 2019-02-08
    • 2020-08-06
    • 2018-02-28
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多