Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将json对象转换为序列化数据格式_Javascript_Jquery_Ag Grid - Fatal编程技术网

Javascript 将json对象转换为序列化数据格式

Javascript 将json对象转换为序列化数据格式,javascript,jquery,ag-grid,Javascript,Jquery,Ag Grid,我有一个包含HTML的对象: obj = { amount: 0 apply_business_delivery: "<div class="form-check"><input type="checkbox" checked class="form-check-input" name="apply_business_delivery" id="apply_busin

我有一个包含HTML的对象:

obj = {
   amount: 0
   apply_business_delivery: "<div class="form-check"><input type="checkbox" checked class="form-check-input" name="apply_business_delivery" id="apply_business_delivery"></div>"
   apply_private_delivery: "<div class="form-check"><input type="checkbox" checked class="form-check-input" name="apply_private_delivery" id="apply_private_delivery"></div>"
   bin: "<i class="far fa-trash-alt"></i>"
   service: "E-mail advisering"
   unit: "<div class="form-group"><select class="form-control form-control-sm select2" name="units" id="units"><option selected>Kr.</option><option >%</option></select></div>"
}
为此:

 "form" => array:2 [
    0 => array:2 [
      "name" => "company_name"
      "value" => "My company"
    ]
    1 => array:2 [
      "name" => "type"
      "value" => "Business"
    ]
  ]
这就是我想要的结果:

obj = {
   amount: 0
   apply_business_delivery: [
      "name" => "apply_business_delivery"
      "value" => 1
   ]
   apply_private_delivery: [
      "name" => "apply_private_delivery"
      "value" => 1
   ]
   bin: ""
   service: "E-mail advisering"
   unit: [
      "name" => "units"
      "value" => "Kr."
   ]
}

这似乎对我有用

var res = $.fn.agGridSerializeRowData( gridFeeOptions.rowData );

/**
 *
 * @param agGridOption
 * @returns {[]}
 */
$.fn.agGridGetAllData = function (agGridOption) {
    let rowData = [];
    agGridOption.api.forEachNode(node => rowData.push(node.data));
    return rowData;
}

/**
 *
 * @param rows
 * @returns {[]}
 */
$.fn.agGridSerializeRowData = function (agGridOption) {
    let allFormsData = [];
    let rows = $.fn.agGridGetAllData(agGridOption);

    $.each(rows, function (i, rowObjects) {
        let obj = {};

        $.each(rowObjects, function (i, e) {
            if (/<\/?[a-z][\s\S]*>/i.test(e)) {
                obj[i] = $.fn.agGridSerializeHtml(e);
            } else {
                obj[i] = e;
            }
        });
        allFormsData.push(obj);
    });
    return allFormsData;
};

/**
 *
 * @param e
 * @returns {{}}
 */
$.fn.agGridSerializeHtml = function( e ) {
    e = e || '';
    let allDataObject = {};
    let allHtmlDataTemp = {};

    if ( e !== '' ) {
        $( e ).find( 'input,select,textarea' ).each( function( i ) {
            allHtmlDataTemp[ i ] = $( this );
        } );
    } else {
        $( 'input,select,textarea' ).each( function( i ) {
            allHtmlDataTemp[ i ] = $( this );
        } );
    }

    $.each( allHtmlDataTemp, function( i ) {
        let $input = $( this );
        let eName;
        let eVal;

        if ( ($input.attr( 'type' ) === 'submit') ||
            ($input.attr( 'type' ) === 'button') ) {
            return true;
        }

        if ( ($input.attr( 'name' ) !== undefined) && ($input.attr( 'name' ) !== '') ) {
            eName = $input.attr( 'name' ).trim();
        } else if ( ($input.attr( 'id' ) !== undefined) && ($input.attr( 'id' ) !== '') ) {
            eName = $input.attr( 'id' ).trim();
        } 

        if ( $input.val() !== undefined ) {
            if ( ($input.attr( 'type' ) === 'radio') || ($input.attr( 'type' ) === 'checkbox') ) {
                eVal = $input.is(":checked");
            } else {
                eVal = $input.val();
            }
        } else if ( $input.text() !== undefined ) {
            eVal = $input.text();
        }

        if ( eVal === undefined || eVal == null ) {
            eVal = '';
        }

        if ( eName !== undefined ) {
            let elementArr = [];
            if ( eName.indexOf( ' ' ) !== -1 ) {
                elementArr = eName.split( /(\s+)/ );
            } else {
                elementArr.push( eName );
            }

            $.each( elementArr, function( index, name ) {
                name = name.trim();
                if ( name !== '' ) {
                    allDataObject[ name ] = eVal;
                }
            } );
        }
    } );
    return allDataObject;
};
var res=$.fn.aggridRowData(gridFeeOptions.rowData);
/**
*
*@param agGridOption
*@returns{[]}
*/
$.fn.agGridGetAllData=函数(agGridOption){
让rowData=[];
agGridOption.api.forEachNode(node=>rowData.push(node.data));
返回行数据;
}
/**
*
*@param行
*@returns{[]}
*/
$.fn.agGridSerializeRowData=函数(agGridOption){
设allFormsData=[];
让行=$.fn.agGridGetAllData(agGridOption);
$.each(行,函数(i,行对象){
设obj={};
$.each(行对象、函数(i、e){
if(//i.test(e)){
obj[i]=$.fn.aggridhtml(e);
}否则{
obj[i]=e;
}
});
所有形式数据推送(obj);
});
返回所有表单数据;
};
/**
*
*@param e
*@returns{{}
*/
$.fn.agGridSerializeHtml=函数(e){
e=e | |'';
让allDataObject={};
让allHtmlDataTemp={};
如果(e!=''){
$(e).查找('input,select,textarea')。每个(函数(i){
allHtmlDataTemp[i]=$(此项);
} );
}否则{
$('input,select,textarea')。每个(函数(i){
allHtmlDataTemp[i]=$(此项);
} );
}
$.each(所有HtmlDataTemp,函数(i){
让$input=$(这个);
让艾娜;
让我们来评估一下;
if($input.attr('type')=='submit')||
($input.attr('type')='button')){
返回true;
}
if($input.attr('name')!==未定义)&($input.attr('name')!==''){
eName=$input.attr('name').trim();
}else if($input.attr('id')!==未定义)和($input.attr('id')!=''){
eName=$input.attr('id').trim();
} 
if($input.val()!==未定义){
if($input.attr('type')=='radio')| |($input.attr('type')=='checkbox')){
eVal=$input.is(“:checked”);
}否则{
eVal=$input.val();
}
}else if($input.text()!==未定义){
eVal=$input.text();
}
如果(eVal==未定义| | eVal==空){
eVal='';
}
if(eName!==未定义){
设elementArr=[];
if(eName.indexOf(“”)!=-1){
elementArr=eName.split(/(\s+/);
}否则{
元素初始推力(搪瓷);
}
$.each(元素数组、函数(索引、名称){
name=name.trim();
如果(名称!=''){
allDataObject[name]=eVal;
}
} );
}
} );
返回allDataObject;
};
之前:

之后:

这是否回答了您的问题@Ourobrus它给了我这样的信息:“0=%5Bobject%20bObject%5D&1=%5Bobject%20bObject%5D&2=%5Bobject%20bObject%5D&3=%5Bobject%20bObject%5D&4=%5Bobject%20bObject%5D&5=%5Bobject%20bObject%5D&6=%5Bobject%20bObject%5D”这不是我想要的结果。@Unico您不需要使用
UrinecodeComponent(p)
如果不使用“%20”,只需执行
p.toString()
。它大部分时间都应该可以工作。@DominiqueFortin嗯,它仍然不能像serializeArray那样很好地转换我的HTML标记。查看我更新的问题。@Unico表单序列化格式适用于html表单元素。如果您有复杂的数据,无法将其放入html表单中,那么您的想法是错误的。也许可以研究一下JSON.stringify。