在 Laravel 5 中通过 AJAX 将数据从视图发布到控制器
Posted
技术标签:
【中文标题】在 Laravel 5 中通过 AJAX 将数据从视图发布到控制器【英文标题】:POST data from View to Controller via AJAX in Laravel 5 【发布时间】:2017-01-17 16:59:56 【问题描述】:数据
我有一个数据
var data = [];
data['upnp_enabled'] = $("#upnp-switch").val();
当我console.log(data);
我得到[upnp_enabled: "true"]
阿贾克斯
我尝试通过 AJAX
向我的控制器创建 PUTvar ajax = $.ajax(
headers: 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('value'),
url: '/' + currentCPE + '/vlan/' + currentPageVLAN + '/upnp',
type: 'PUT',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: data
//data: JSON.stringify(data) <---- I even tried this, same result !!
);
ajax.done(function (data)
parseMsgData(data, "Setting saved");
console.log(data);
);
控制器
然后在我的控制器中,我有这个
public function update_upnp($cpe_mac, $vlan_id)
$inputs = Input::all();
dd($inputs);
我不断进入我的网络标签 > XHR
[]
我希望在我的dd($inputs);
中看到类似的内容
[upnp_enabled: "true"]
有人可以填写我遗漏的吗?
【问题讨论】:
参见 var p=$("#upnp-switch").val();控制台.log(p);你得到了什么结果? 你的路线是怎么放的? 代替 dd ,使用 var_dump($inputs);看看你得到了什么结果? @Borna : 你的p
应该返回这个[upnp_enabled: "true"]
@OrlandoCharles :这是我的路线 Route::put('/cpe_mac/vlan/id/upnp', 'NetworkController@update_upnp');
,它正在工作,因为我知道我的 dd 正在运行。但它吐出了错误的数据。
【参考方案1】:
好的。首先,请求应该是这样的(注意数据是 JSON 而不是数组):
var data = ;
data['upnp_enabled'] = $("#upnp-switch").val();
var ajax = $.ajax(
headers: 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('value'),
url: '/' + currentCPE + '/vlan/' + currentPageVLAN + '/upnp',
type: 'PUT',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: data
//data: JSON.stringify(data) <---- I even tried this, same result !!
);
ajax.done(function (data)
parseMsgData(data, "Setting saved");
console.log(data);
);
在你的控制器中,你可能需要有类似的东西:
use Illuminate\Http\Request;
public function update_upnp($cpe_mac, $vlan_id, Request $request)
return $request->input();
希望对你有帮助!
【讨论】:
【参考方案2】:在您的控制器中,您需要以下内容
确保您使用的是请求类。 :
使用 App\Http\Requests;
您需要通过您的方法接受请求作为参数
public function update_upnp($cpe_mac, $vlan_id, Request $request)
dd($request->attribute);
祝你好运
【讨论】:
以上是关于在 Laravel 5 中通过 AJAX 将数据从视图发布到控制器的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 5.2 中通过 RESTful 资源控制器使用 jQuery Ajax Post 方法将数据存储在数据库中
在 laravel 中通过 ajax 提交简单的表单,之后,将新行插入到现有表中,其中包含来自提交表单的数据