【问题标题】:Pass Data to Laravel Controller through AJAX通过 AJAX 将数据传递给 Laravel 控制器
【发布时间】:2019-07-16 13:50:15
【问题描述】:

我正在尝试从选择行数据表中读取数据并通过 AJAX 将数据发布到我的 Laravel 控制器。但这里出了点问题。当我死并转储请求所有“dd(request()->all());”在我的控制器中,我只获得令牌值并且数据为空。我不知道我做错了什么。我是 jquery 新手,请帮忙。

function AJAXCallCancelSimsByAPN(data) {
  var url = "/tools/sim/cancel";
  var type = "POST";

  jQuery.ajaxSetup({
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"').attr('content')
    }
  });

  console.log(data);

  jQuery.ajax({
    url: url,
    type: type,
    data: {
      "_token": $('meta[name="csrf-token"').attr('content'),
      "data": data
    },
    beforeSend: function () {},
    success: function (data) {
      try {
        //console.log(data);        

      } catch (err) {
        alert("Error running JS code from module: AJAXCallCancelSimsByAPN");
      }
    },
    error: function (url, jqXHR, textStatus, errorThrown) {
      alert("url: " + url + " error: " + jqXHR.responseText + " status: " + textStatus + " errorThrown: " + errorThrown);
    },
    complete: function () {}
  });
}

控制器

public function cancelSIMS(Request $request)
    {
       dd(request()->all());

        //
    }

输出

array:1 [
  "_token" => "7wc63lIYESIYNCVHYUe3YAI5KSxo1nqvTgtCr"
]

【问题讨论】:

  • 我们可以看到您作为参数传递的数据吗?
  • [apnID: "67", cancelDate: "02/05/2019", sims: Array(1)]
  • 你把你的javascript数据转换成json了吗?我的意思是你使用 JSON.stringify() 方法吗?
  • 是的,我试过了,但还是不行
  • 能否将 contentType 属性设置为“application/json”再试一次?

标签: jquery ajax laravel


【解决方案1】:

在发送之前尝试序列化您的数据:

var serialized = JSON.stringify(data);

data: {
  "_token": $('meta[name="csrf-token"').attr('content'),
  "data": serialized
},

这是如何计算的?

【讨论】:

  • 这就是我得到的“数据”=>“[]”
  • 在不相关的注释中,jQuery recommends 在 .ajax() 调用中设置标头,而不是在 .ajaxSetup() 中设置,因为 ajaxSetup 为所有后续 ajax 调用设置参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多