Вставить входные значения формы в массив и сохранить пользовательские индексы ключей - PullRequest
0 голосов
/ 19 января 2011

Я работаю с формой с такими элементами:

<form id="post">
   <div id="related_posts">
        <input type="hidden" class='related' name="reladded[72]" value="12" />
        <input type="hidden" class='related' name="reladded[34]" value="21" />
        <input type="hidden" class='related' name="reladded[46]" value="33" />
   <div>
</form>

Когда я отправляю это, используя стандартный процесс формы, я получаю массив, который выглядит следующим образом:

array('72'=> '12,'34'=> '21,'46'=> '33')

, который я затем сериализую и сохраняю в базе данных.

Как я могу использовать JQuery для сбора одних и тех же элементов из этих полей и преобразования их в сериализованный массив, чтобы я мог отправить его через AJAX POST?

У меня есть весь код AJAX, но я пока не могу перебрать элементы для получения правильных значений массива. В форме есть и другие элементы, но это единственные, которые я хочу отправить.

Я пробовал методы, подобные следующим, но безрезультатно:

var serialrel = $('#post input:hidden[name="reladded"]').serialize();

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 21 января 2011

Вот то, что я придумал, чтобы получить отформатированный массив, как указано выше:

reladded = new Array();
jQuery("#related-posts").find('input.related').each(function() {
    jQuery.each(this.attributes, function(i, attrib){
     var name = attrib.name;
     var value = attrib.value;
     if( name=='name' ){
         arrayNameAndKey = value; //get 'reladded[*]' (key for array)    
    }
     if( name=='value' ){
        arrayValue = value; //get input value
     }
    });
    //add entry to 'reladded' array from name attr. and input values
    eval(arrayNameAndKey +"='"+arrayValue+"'");
}); 

После того, как я отправил массив через AJAX, мне пришлось удалить все «неопределенные» значения массива, которые есть в JavaScriptдобавил, между моими.Вот код, который я использовал для этого:

<?php
    $related = $_POST['reladded'];
    //clean javascript crud
    if(is_array($related)){
            foreach($related as $key=>$value){
        if($value=="undefined")
        unset($related[$key]);
    }
?>

Определенно открыт для более элегантных способов сделать это ...

Примечание. На самом деле мне не нужно было сериализовать массив в JQuery,так как я просто передавал это через PHP с AJAX.Я сделал сериализацию там вместо этого.

Моей главной целью было сохранение пользовательских индексов ключей в извлеченном массиве - вот что я хочу, чтобы предложения о том, как это сделать проще, если это возможно .... спасибо !!!

0 голосов
/ 19 января 2011

Вы можете использовать .serialize() в элементе формы

$("#post").serialize();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...