Ajax将关联数组与表单序列化相结合

时间:2015-01-15 16:10:53

标签: javascript jquery ajax asp.net-mvc-4 serialization

我正试图通过一些javascript代码和一个表单来分析数据。

目前我有一个包含我数据的关联数组:

var AjaxSendData = {};
AjaxSendData['t_searchtext'] = searchtext;
AjaxSendData['t_numofres'] = numofres;
AjaxSendData['t_orderbydesc'] = orderbydesc;
AjaxSendData['t_columnnum'] = columnnum;
AjaxSendData['t_pagenum'] = pageNum;
AjaxSendData['t_contenttype'] = contenttype;
AjaxSendData['t_MediaFilterType'] = MediaTypeID;
AjaxSendData['t_status'] = status;
AjaxSendData['t_ResultsFilterID'] = ResultsFilterID;
AjaxSendData['t_FilterIdType'] = FilterIdType;

此外,我有一个表格,我需要使用此ID #addionalargs进行序列化。

此表单包含多个值,包括从复选框中创建的列表。这也需要序列化。

我正在使用Mvc,所以我希望模型绑定器仍然能够绑定值以用于验证目的和更清晰的代码。

有人知道如何组合关联数组和表单之间的数据吗?

1 个答案:

答案 0 :(得分:0)

您需要将表单序列化为JavaScript对象(关联数组),这不是我所知道的,因此这里有一个函数。

function SerializeObject(a) {
var o = {};        
$.each(a, function () {
    if (o[this.name] !== undefined) {
        if (!o[this.name].push) {
            o[this.name] = [o[this.name]];
        }
        o[this.name].push(this.value || '');
    } else {
        o[this.name] = this.value || '';
    }
});
return o;

}

然后你需要扩展AjaxSendData:

    var AddArgs = $('#yourform').serializeArray();

    var AdditionalArgs = SerializeObject(AddArgs)

    $.extend(AjaxSendData, AdditionalArgs);