Ajax 结合关联数组和表单序列化

Ajax combine Associative Array with Form Serialization

我正在尝试 ajax 分布在一些 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,所以我希望模型绑定器仍然能够绑定值以用于验证目的和更清晰的代码。

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

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