Handeling JSON在Laravel控制器中

时间:2016-08-02 17:43:42

标签: json laravel

我是Laravel的新手,也是JQuery的新手,所以请耐心等待。因此,在我的一个观点中,我有一个表格:

<table id="tblAShip" class="report table table-condensed table-hover table-sorter">
<thead class="no-sort">
    <tr>
        <th>Height</th>
        <th>Width</th>
        <th>Length</th>
        <th>Weight</th>
        <th>Create parcel</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td><input id="height" name="height" type="number" /></td>
        <td><input id="width" name="width" type="number" /></td>
        <td><input id="length" name="length" type="number" /></td>
        <td><input id="weight" name="weight" type="number" /></td>
        <td><input type="button" name ="creatShip" id="creatShip" value="Ajouter"></td>
    </tr>
</tbody>

然后这个表单由一个进行Ajax调用的JS处理

function creerParcel(){
var docNum = $("#commandeNum").val();

var hei = $("#height").val();
var wid = $("#width").val();
var len = $("#length").val();
var wei = $("#weight").val();
$.ajax({
    type: "POST",
    url: "/EasyPostNetBanks/Shipment/"+docNum,
    contentType: "application/json; charset=utf-8",
    processData: false,
    data: {
        "Parcels":[{
            "length": len,
            "width": wid,
            "height": hei,
            "weight": wei }]
    },
    error: function(jqXHR, textStatus, errorThrown)
    {

    },
    success: function(data){
    }
});

然后在我的控制器中我尝试检索此数据以创建包含我从Ajax调用获得的包裹信息的货件

foreach(\Input::get('Parcels') as $parcelInfo)
    {
        $parcel = $this->CreateParcel($parcelInfo);

        $shipment =  Shipment::create(array(
            "to_address" => $to,
            "reference"=>$idCommande,
            "from_address" => $from,
            "parcel" => $parcel,
            "options" => array("label_format" => "ZPL")
        ));

        $ship = \Shipments::creer($shipment);
        $shipments[] =  $ship;
    }

但是我的\ Input :: get(&#39; Parcels&#39;)总是NULL \ n。这怎么可能?我尝试了几乎所有我能在网上找到的东西,但无济于事,所以我在这里(首先发布BTW。大家好!)。

2 个答案:

答案 0 :(得分:0)

您是否尝试在浏览器中查看网络标签,看看是否所有内容都以您期望的方式发送到服务器?例如,在Chrome中打开检查面板,通常右键单击,然后选择&#34; Inspect Element&#34;。然后查看&#34; Network&#34;选项卡以确切了解发送到服务器的内容。

如果ajax帖子看起来正确,那么它将有助于缩小问题的确切位置。如果它不是前端,请尝试死并在整个帖子结果上转储dd($variable)

您可以通过在控制器中的某处使用以下内容来实现此目的。

dd(Input::all());

答案 1 :(得分:0)

好的,事实证明这是我的processData:false,这导致了问题,愚蠢的我。