不要在jQuery's $.param()中包含空字符串或null
Don't include empty strings or nulls with jQuery's $.param()
我正在使用jQuery的$.param()
以以下格式序列化对象:
var queryParams = {
firstNm: null,
lastNm: 'M',
id: null,
email: null
}
当我使用$.param(queryParams)
时,我得到以下内容:
firstNm = &lastNm = M&id =电子邮件=
我想要的是:
lastNm = M
我希望任何为空或空的参数不显示在输出中。这是可能使用jQuery的$.param()
,还是需要自定义序列化?
这不是这个问题的重复。这个问题更多地与MediaWiki API有关,并且与当参数为null或空时不包括=
有关,并且只包括键值对的键。我的问题是,如果值为null或空,是否可以完全从输出中删除键值对。
您可以编写自己的函数来排除null和空值:
var queryParams = {
firstNm: null,
lastNm: 'M',
id: null,
email: null
}
function isEmpty(value){
return value == null || value == "";
}
for(key in queryParams)
if(isEmpty(queryParams[key]))
delete queryParams[key];
// queryParams now = { lastNm: "M"}
,如果你从表单中得到这些值,你可以这样做:
$("#form :input[value!='']").serialize()
这是在序列化字符串中删除空参数的另一种方法。
var serializeURLParameters = function(oParameters) {
return "?" + Object.keys(oParameters).map(function(key) {
if(oParameters[key]) {
return key + "=" + encodeURIComponent(oParameters[key]);
}
}).filter(function(elem) {
return !! elem;
}).join("&");
}
这里你可以排除空值,保持你的属性在你的对象:https://jsfiddle.net/leojavier/bxc57o3v/2/
var queryParams = {
firstNm: null,
lastNm: 'M',
id: null,
email: null
}
var query = {}
for(item in queryParams) {
if(queryParams[item] != null && queryParams[item].length > 0) {
query[item] = queryParams[item]
console.log(query)
console.log($.param(query));
}
}
相关文章:
- ng打开空字符串
- React 15使用空字符串删除输入值
- 如何将正则表达式包含到字符串数组中
- 获取类中包含给定字符串的元素的ID
- HTML提交表单,同时包含空字段检查和按钮隐藏
- 输入值由于输入font size=“”而返回空字符串;0〃;
- PHP's json_decode返回空字符串(不是NULL)
- 从一组具有相同起始和结束的所有段落的段落中提取包含特定字符串的段落
- 如果条件推送包含/匹配字符串的值
- 计算空字符串的值
- 在 JavaScript 中查找包含 XPath 字符串的所有元素
- 查找数组中项目包含子字符串的索引
- 按 ID 包含子字符串的类查找元素并更改样式
- 奇怪的日期()是用包含空字节的字符串创建的
- 包含空字符串的 HTML 属性不显示 = 运算符
- val() 在实际包含值时显示空字符串
- 如何对包含空字符串、NaN、数字和无穷大的数组进行排序
- 不要在jQuery's $.param()中包含空字符串或null
- 属性不能包含空字符串
- JavaScript if以[“”](一个包含空字符串的数组)失败