我是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。大家好!)。
答案 0 :(得分:0)
您是否尝试在浏览器中查看网络标签,看看是否所有内容都以您期望的方式发送到服务器?例如,在Chrome中打开检查面板,通常右键单击,然后选择&#34; Inspect Element&#34;。然后查看&#34; Network&#34;选项卡以确切了解发送到服务器的内容。
如果ajax帖子看起来正确,那么它将有助于缩小问题的确切位置。如果它不是前端,请尝试死并在整个帖子结果上转储dd($variable)
。
您可以通过在控制器中的某处使用以下内容来实现此目的。
dd(Input::all());
答案 1 :(得分:0)
好的,事实证明这是我的processData:false,这导致了问题,愚蠢的我。