我从序列化数据返回以下行
rl=250&first_name=&surname=&email=&phone=&country_id=1&agency_name=&sitename=
我想循环遍历这些并检查是否有空字段,如果有,那么我可以抛出错误。
我可以获取索引和元素,但元素是rl=250
或first_name=
如何检查元素是否已设置。我也尝试过使用serializeArray(),但它返回[Object, Object, Object, Object, Object, Object, Object, Object]
,它应该有名称和值,但我不知道如何访问这些
答案 0 :(得分:0)
您需要使用'&'拆分它。然后你应该申请循环,在那个循环中你再次需要用'='符号分割该字符串。然后,如果将循环的第二个元素作为空白,则可以抛出错误
答案 1 :(得分:0)
serializeArray是一个好方法。
https://api.jquery.com/serializeArray/
正如您所看到的,它会返回对象数组,所以在您的情况下它就像tihs:
[
{
rl: 250
},
{
first_name: undefined
}
]
在此之后,您可以使用for循环对值对象数组进行迭代。
答案 2 :(得分:0)
我找到了杰克阿兰的这个功能 https://stackoverflow.com/a/16215183/1430587
function deparam(query) {
var pairs, i, keyValuePair, key, value, map = {};
// remove leading question mark if its there
if (query.slice(0, 1) === '?') {
query = query.slice(1);
}
if (query !== '') {
pairs = query.split('&');
for (i = 0; i < pairs.length; i += 1) {
keyValuePair = pairs[i].split('=');
key = decodeURIComponent(keyValuePair[0]);
value = (keyValuePair.length > 1) ? decodeURIComponent(keyValuePair[1]) : undefined;
map[key] = value;
}
}
return map;
}
答案 3 :(得分:0)
你可以这样做:
$(document).ready(function(e){
$("#frm-login").submit(function() {
var DATA = $(this).serializeArray();
len = DATA.length,
dataObj = {};
for (i=0; i<len; i++) { // acceesing data array
dataObj[DATA[i].name] = DATA[i].value;
}
if ( !dataObj['user-id'].trim() || !dataObj['user-pass'].trim() ) { //cheking if empty field
alert('empty');
}else{
alert('full');
}
//console.log(DATA);
$.ajax({
type: "POST",
url: 'user-login-process.php',
data: DATA,
success: function(response){
//alert(response); // show response from the php script.
}
});
return false; // avoid to run the actual submit of the form.
});
}); //document