在响应中看不到 POST 数组
Posted
技术标签:
【中文标题】在响应中看不到 POST 数组【英文标题】:Cannot see POST array in response 【发布时间】:2015-02-16 17:48:27 【问题描述】:首先我有一个复选框列表
@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 获取按钮值并将其添加到兄弟复选框值并将其标记为选中。我知道这是可行的,因为如果我运行$("[name='extras[]']").serializeArray()
,我可以在控制台中看到extras[]
标记为选中并列出。
我有一个函数可以将表单数据发布到控制器服务器端,该控制器服务器端将对数据执行某些操作并发送回某些内容。
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()
我会取回我所有的 **non-array* POST 数据。 extras
有一个字段,但它是空白的:,"extras":"",
我已经尝试将按钮全部删除,只使用复选框,仍然得到相同的结果。
我在这里缺少什么?我的问题可能是什么?
【问题讨论】:
【参考方案1】:您将Extras
定义为一个没有值的数组。换句话说,var Extras[];
将声明一个数组,并为其赋予值 null;
和 null;
尝试将检查定义为 vairbles,并将它们发送到 Extras
数组,它更高效且受支持。
【讨论】:
将检查定义为变量?您的意思是 .each() 通过检查并从每个变量中创建一个变量并将其全部推送到数组中吗? @user2690363 这正是我的意思,我只是措辞奇怪。【参考方案2】:我不知道为什么,但是在发送到 $.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" );
);
【讨论】:
以上是关于在响应中看不到 POST 数组的主要内容,如果未能解决你的问题,请参考以下文章
在 Bootstrap 4 中看不到文本的响应式表格压缩表单字段