html массив входных элементов, созданный динамически, неправильно интерпретируется в PHP Серверная часть - PullRequest
0 голосов
/ 16 апреля 2020

Я создаю html элементы ввода динамически, используя DOM CreateElement ()

function createHtmlElem( elName , attri ){

    var el = document.createElement(elName);
    for( var key in attri ){
        val = attri[key];
        el.setAttribute( key , val );
    }

    return el;
}

Я хотел создать следующие html элементы, используя createHtmlElem( 'input' , {"name":"usernames[]"} ), и это работает, я имею в виду, что это создает HTML Элементы на странице.

<input type="text" name="usernames[]" />

проблема на стороне сервера. Я получаю сериализованную форму с помощью jquery .serialize () и публикую ее на стороне сервера

ожидание равно

[usernames] => Array
        (
            [0] => andrew
            [1] => arul
        )

Но я получаю как

[usernames[]] => 'andrew'
[usernames[]] => 'arul'

Я совершенно сбит с толку, Это очень невозможно, когда вы создаете элементы входного массива статически, помещая raw html и отправьте его.

1 Ответ

0 голосов
/ 17 апреля 2020

Я создал функцию post_processing для обработки полученного массива. Надеюсь, что это полезно для кого-то.

/**
 * [create_array description]
 * Convert Array 
 * arr = [
 *     'username_1'=>'John Deo',
 *     'address_1'=>'wuhan',
 *     'pin_1'=>'560093',
 *     'username_2'=>'Dennis',
 *     'address_2'=>'Hubei',
 *     'pin_2'=>'605110'
 * ];
 *
 * arr = [
 *     [1] => [
 *         'username' => 'John Deo',
 *         'address'  => 'wuhan',
 *         'pin'      => '560093',
 *     ],
 *     [2] => [
 *         'username' => 'Napoleon',
 *         'address'  => 'Karnataka',
 *         'pin'      => '605110'
 *     ]
 * ]
 * @param  [type]  $inp    [description]
 * @param  integer $nitems [No of Set of items, for this eg nitems = 2]
 * @return [type]          [Rearrange array as required]
 */
function rearrange_array( $input_arr , $nitems){
    //unset( $inp['donor_id'] );
    $n = count( $input_arr );
    $i = 0;
    //nitems is the number of items of objects or books
    for($i = 0; $i < $nitems ; $i++){

        $tmp = [];
        foreach( $input_arr as $k => $v ){
            $new_key = preg_replace("/_[0-9]/",'', $k);// getrid of the underscore and the number behind.
            $tmp[$new_key]=$input_arr[$new_key . '_' . $i];
        }
        $output_arr[$i]= $tmp;
    }

    return $output_arr;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...