首先,我有一个复选框列表
@foreach ($extras as $extra)
<span class="button-checkbox">
<button type="button" class="btn" value="{{ $extra->id }}" data-color="primary">
{{ $extra->name.' - $'.$extra->amount}}
</button>
<input type="checkbox" name="extras[]" id="extras" class="hidden" />
</span>
@endforeach
这些按钮用作复选框。在幕后有JS获取按钮值并将其添加到兄弟复选框值并将其标记为已选中。我知道这是有效的,因为我可以看到我的控制台中的extras[]
标记为已选中并列出,如果我运行$("[name='extras[]']").serializeArray()
。
我有一个函数将表单数据发送到控制器服务器端,它将对数据执行某些操作并发回一些内容。
function updateTotals() {
var url = "/reservation/updateTotals";
//set hidden field that holds the selected property's name
//$('#property_name').val($('#properties').text().trim());
$.post(url, $("form").serializeArray())
.done(function(data) {
//console.log(data);
})
.fail(function() {
alert("Error updating totals.");
})
.always(function() {
//alert( "finished" );
});
}
我有一条链接到控制器的路线:
Route::post('reservation/updateTotals', 'ReservationController@updateTotals');
现在我只是使用Controller测试来获取我的数组数据:
public function updateTotals() {
//get property
$property = Property::findOrFail(Input::get('property_id'));
//get extras
return $extras = $_POST['extras'];
//get discount
$discount = Input::get('discount');
}
当我return
$_POST['extras']
或Input::get('extras')
时,我的回复中没有任何内容。但是,如果我返回$_POST
或Input::all()
,我会收回所有**非数组* POST数据。 extras
有一个字段,但该字段为空:,"extras":"",
&lt; - 来自我的回复
我尝试一起取消按钮,只使用复选框,仍然得到相同的结果。
我在这里缺少什么?可能是我的问题?
答案 0 :(得分:1)
您将Extras
定义为数组,没有值。换句话说,var Extras[];
将声明一个数组,并为其指定值null;
和null;
尝试将检查定义为vairbles,并将它们发送到Extras
数组,它是更有效率和支持。
答案 1 :(得分:0)
我不确定为什么但是在发送到$.post()
之前将我的序列化数组设置为var使一切正常(我的意思是extras数组在我的控制器中可见并可用,并且可以在响应中看到) 。我不明白为什么,但对我来说绝对是这样。
function updateTotals() {
var data = $('form').serializeArray();
var url = "/reservation/updateTotals";
$.post(url, data)
.done(function(data) {
//do something
})
.fail(function() {
alert("Error updating totals.");
})
.always(function() {
//alert( "finished" );
});
}