我提交的订单表格包含client_id,payment_method等字段,但也包括order_items,如:item1(price = 12,prod_id = 1,quantity = 3),item2(price = 12,prod_id = 1,quantity = 3)等等。我想将表单提交给laravel 4 API,预计如下:
$data = Input::all();
$order = Order::create($data);
if (in_array('items', $data)) {
$order->items()->attach([$data['items']]);
}
我的jQuery如下所示:
$("#submitBtn").on('click', function(e){
e.preventDefault();
//lame way - but created 2 forms that I try to join int one array
var dataArray = $("#neworderform").serializeArray();
var items = $("#newProdForm").serializeArray();
var orders = [];
orders.push(dataArray);
orders.push(items);
//submit
ajaxSubmit(orders);
})
ajaxSubmit函数如下所示:
function ajaxSubmit(orders){
$.ajax({
type: "GET",
url : "/orders/save",
data : orders,
success : function(data){
$("#success").html("Order created sucessfully!, redirecting...");
setInterval(function () {
//window.location.href="/ui/orders.html";
}, 3000);
},
error: function(e) {
$("#success").html(e.message);
}
},"json");
}
当我在提交后检查控制台时,我得到2个未定义的参数(见下图:):
undefined
undefined
我知道问题在于构建数组的方式,但我不确定我需要做什么(我猜是jquery技能) - 有人可以帮忙吗?
提前致谢
答案 0 :(得分:1)
有一种更简单的方法来构建你想要构建的数组。
在渲染视图后,不是使用jquery来执行此操作,而是在渲染数组之前构建数组可能更好。
换句话说,以输入名称的形式构建数组。
<input type="text" name="user[client_id]" ...
现在提交表单&#39; client_id&#39;将在名为&#39; user&#39;的数组中。当您执行Input :: get(&#39; user)时,您将获得整个数组。无需担心使用jquery构建一个。
如果你的输入需要一个可重复使用的特定标记,那么我还建议使用自定义表单宏来构建它们,看看这里:
http://laravel.com/docs/4.2/html#custom-macros
这种将输入构建到数组中的方法在大量分配表单数据以便存储在数据库中时也非常方便。