通过 AJAX 将数据传递给 Laravel 控制器
Posted
技术标签:
【中文标题】通过 AJAX 将数据传递给 Laravel 控制器【英文标题】:Pass Data to Laravel Controller through AJAX 【发布时间】: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”再试一次? 【参考方案1】:在发送之前尝试序列化您的数据:
var serialized = JSON.stringify(data);
和
data:
"_token": $('meta[name="csrf-token"').attr('content'),
"data": serialized
,
这是如何计算的?
【讨论】:
这就是我得到的“数据”=>“[]” 在不相关的注释中,jQuery recommends 在 .ajax() 调用中设置标头,而不是在 .ajaxSetup() 中设置,因为 ajaxSetup 为所有后续 ajax 调用设置参数。以上是关于通过 AJAX 将数据传递给 Laravel 控制器的主要内容,如果未能解决你的问题,请参考以下文章
通过 axios ajax post 将数据传递给 php 脚本
在使用 Laravel 和 Vue 时,通过 Blade Views 将数据传递给 Vue 与使用 Axios 直接传递给 Vue Components 的优缺点是啥? [关闭]