在Laravel 5中通过AJAX从View到Controller发布数据

时间:2016-09-09 13:59:07

标签: php arrays json ajax laravel

数据

我有数据

var data = [];
data['upnp_enabled'] = $("#upnp-switch").val();

当我console.log(data);时,[upnp_enabled: "true"]

的Ajax

我试图通过 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);

}

我一直进入网络标签&gt;的 XHR

  

[]

我期望看到dd($inputs);

这样的内容

[upnp_enabled: "true"]

有人可以填写我错过的内容吗?

2 个答案:

答案 0 :(得分:1)

在您的控制器中,您需要以下

  1. 确保您使用的是请求类。 :

    使用App \ Http \ Requests;

  2. 您需要通过您的方法接受请求作为参数

        public function update_upnp($cpe_mac, $vlan_id, Request $request){
          dd($request->attribute);
        }
    
  3. 祝你好运

答案 1 :(得分: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();
}

希望它有所帮助!