场景描述:
今天有个需求,前端需要post一个二维数据到后端:
var $pageContent = $('#admui-pageContent');
$('#btn-y').click(function () {
$('.city-selecter').html('');
var pc_cat = $('.pc-cat').html();
var app_cat = $('.app-cat').html();
var title = $('input[name="title"]').val();
var sites = [],html='';
$('input[name="city[]"]:checked').each(function(){
sites.push($(this).val());
html += '<div class="form-group row city-config" data-city="'+$(this).val()+'">';
html += '<label class="col-sm-2 control-label">'+$(this).val()+'</label>';
html += '<div class="col-sm-4">';
html += '<input type="text" class="form-control " placeholder="请输入标题" name="title" value="'+title+'">';
html += '</div>';
html += '<div class="col-sm-2">';
html += pc_cat;
html += '</div>';
html += '<div class="col-sm-2">';
html += app_cat;
html += '</div>';
html += '<div class="col-sm-2">';
html += '<a class="btn btn-default del" data-cid="'+$(this).val()+'">删除</a>';
html += '</div>';
html += '</div>';
// html += '<input type="hidden" name="share['+$(this).val()+']" value="'+$(this).val()+'">';
});
console.log(sites);
$('.city-selecter').append(html);
});
$pageContent.on('submit', '.page-content form', function (e) {
var data = {};
var i = 0;
$('.city-config').each(function(){
data[i] = {};
data[i]['city'] = $(this).attr('data-city');
data[i]['title'] = $(this).find('input[name="title"]').val();
data[i]['app_catid'] = $(this).find('select[name="app_catid"]').val();
data[i]['pc_catid'] = $(this).find('select[name="pc_catid"]').val();
i ++;
})
data = JSON.stringify(data);
$('input[name="site_config"]').val(data);
$.pjax.submit(e,'#admui-pageContent', { replace: true });
});
我把二维数组转为对象序列化再传了.到了服务端,需要判断一下那个值是不是空吧,因为穿空的就无效了.所以得判断一下.
开始我是这样想的
if (request()->isPost()) {
$data = input('post.');
$site_config = json_decode($data['site_config']);
if(empty($site_config)) $this->error('参数错误');
....
后来发现,文档中empty()返回值描述没有对象相关的返回,好吧~那应该是对对象不起作用了,好像也没有空对象说法吧,自己挖坑不?!用isset更加不可能了
当var存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE.
以下的东西被认为是空的:
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)
灵机一动,想到了这个get_object_vars — 获取给定对象的属性
if (request()->isPost()) {
$data = input('post.');
$site_config = json_decode($data['site_config']);
if(empty(get_object_vars($site_config))) $this->error('参数错误');
用get_object_vars来获取对象属性,在判断就好了~
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:JefskyWong ——程序猿甜品店
链接:https://www.jefsky.com/blog/60
来源:https://www.jefsky.com/