jQuery序列化并验证数据

时间:2014-02-28 10:59:43

标签: javascript jquery

我从序列化数据返回以下行

rl=250&first_name=&surname=&email=&phone=&country_id=1&agency_name=&sitename=

我想循环遍历这些并检查是否有空字段,如果有,那么我可以抛出错误。

我可以获取索引和元素,但元素是rl=250first_name=

如何检查元素是否已设置。我也尝试过使用serializeArray(),但它返回[Object, Object, Object, Object, Object, Object, Object, Object],它应该有名称和值,但我不知道如何访问这些

4 个答案:

答案 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