ajax向后台传递数组参数并将后台响应的数据赋值给一个变量供其它插件使用

1.在js中封装ajax向后台传递数组参数函数

//combogrid

*
 * @Description  封装ajax向后台传递数组参数并将后台响应的数据赋值给一个变量方便其他插件使用该数据函数
 *
 * @Author wzf
 * @Date 2018/10/16 17:22
 * @Param
 * @return
 *  var arrays=new Array();//用来给后台萌购类型参数赋值
 *  arrays[0]="MoreTaoCan_Type";
 *  arrays[1]="MoreTaoCan_Type_mg";
 *  arraysAjax(base+"/xxxxxx/xxxxx",arrays)
 **/
function arraysAjax(url,arras) {
    $.ajax({
        type:'POST',
        url:url,
        dataType:'JSON',
        async: false,//fase 同步  true异步 必须设置同步请求否则变量用不了
        traditional:true,//防止深度序列化 必须设置防止深度序列化否则后台获取不到
        data:{params:arras},//向后台传递参数 params为后台数组参数名称  arras为要传递的值
        success:function(data){
            if(data.code=="500"){
                failureMsg(data);//封装的消息提醒
            }
            if(data.code=="200"){
                successMsg(data);////封装的消息提醒
                if(data!=null&&data!=undefined){ 
                    dataName =data;
                }
            }
        },
        error: function(){
            $.messager.alert('系统错误提示','请求服务器异常','error');
             return;
        }
    });
}        

2.要点:

a.由于执行顺序的关系必须设置同步请求其他插件才能使用后台响应的数据变量

b.由于序列化会将数组拆解所以必须设置阻止深度序列化

c.后台参数名要和前台传递的参数名保持一致 并且参数类型为字符串数组

 

3.其他插件使用后台响应的数据变量

if(arrasData!=null&&arrasData!=undefined){//ajax函数非null判断

$('#add_codeType').combogrid({
        multiple: false,//单选多选
        idField: 'codeType',
        textField: 'codeType',
        data : arrasData,//arrasData为函数中赋值后的变量
        columns: [[
            {field:'codeType',title:'萌购类型',330},
        ]],
        editable : false,//不可编辑
        fitColumns: true,//自适应
        panelHeight:'200px',
        onSelect : function(newValue, oldValue){//onselect 事件会在文本框中的文本被选中时发生
            //alert($('#searchCode').combogrid("getValue"));//打印idField
            //$('#sysLogDataGrid').datagrid('reload',{keyword111:$('#searchCode').combogrid("getValue")});
        },
    });
}
原文地址:https://www.cnblogs.com/awzf/p/9799416.html