在 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

向我的控制器创建 PUT
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);
);

控制器

然后在我的控制器中,我有这个

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 存储数据失败

在 laravel 中通过 ajax 提交简单的表单,之后,将新行插入到现有表中,其中包含来自提交表单的数据

在 laravel 中通过 ajax 返回视图

在 Laravel 中通过 ajax 加载更雄辩的 hasMany 关系查询?

如何在控制器laravel 8中通过ajax传递路由链接和图像存储链接