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

Ajax combine Associative Array with Form Serialization

本文关键字:表单 序列化 相结合 数组 关联 Ajax      更新时间:2023-09-26

我正在尝试对分布在一些javascript代码中的数据进行ajax。

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

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,所以我希望模型绑定器仍然能够绑定值以进行验证和更干净的代码。

有谁知道如何在关联数组和表单之间组合数据?

您需要将表单序列化为 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);