ajaxform () & sortable ('serialize') и codeigniter .. отправка полей формы и элементов списка - PullRequest
0 голосов
/ 20 декабря 2011

У меня есть форма и список sortable (), куда пользователь может перетащить из предварительно заполненного списка в пустой UL.Пользователь будет перетаскивать LI, в которые он хочет, в этот пустой UL. Существует также форма с несколькими текстовыми полями, которые пользователь заполняет и нажимает кнопку «Отправить».

Я могу получить ajaxform, чтобы отправить данные формы и отобразить их в сеансе flashdata, но я не могу получить его, чтобы показать данные allow_fields.(который является сортируемым списком).Я знаю, что он сериализует его, потому что запуск alert(serializedList); возвращает сериализованный список элементов.

Это JS для создания сортируемых списков:

/**
 * sortable ul items
 * 
 * this is used for the add levels page to associate allowed_fields 
 * to a level.
 */
$('.block-list').sortable({
    connectWith: '.block-list',
    placeholder: 'placeholder'
});

Это JS для обработки ajaxSubmit:

/**
 * showResponse(data)
 * show the response if the form submission is successful
 * @param  {object} data object of message or success
 * @return {null}
 */
function showResponse(data){
    alert(serializedList);
    if (data.errorStatus == 1){
        $.jGrowl(data.message, { theme: 'error' });
    }else{

        $.jGrowl(data.message, { theme: 'success' });
    }
}//end showResponse()

/** @type {Object} setup the options for the ajax submit forms. */
var submitOptions = {
    success: showResponse,
    beforeSubmit: function(){ serializedList = $("#allowed-fields-list").sortable('serialize');  },
    dataType: 'json',
    resetForm: true ,
    data: { allowed_fields: serializedList }
};      
$("#addlevel-form").ajaxForm(submitOptions);

и это функция воспламенителя кода, которая будет обрабатывать данные формы ..

public function addlevelprocess(){
    $message = array(
        'message' => 'Successfully Added The Level To The Database! WHOA!:'.$this->input->post(),
        'errorStatus' => 0
    );
    $this->session->set_flashdata('post', $this->input->post());
    echo json_encode($message);
}

как мне получить ajaxform для отправки данных поля формы и данных sortables ().

1 Ответ

0 голосов
/ 29 декабря 2011

В итоге я использовал ajaxSubmit () и передавал сериализованную информацию формы через данные:

$('#addlevel-form').submit(function() {
    /** @type {serialized} serialized array of field IDs for allowed fields */
    var allowedFields = $('#allowed-fields-list').sortable('serialize');
    var formInfo = $('#addlevel-form').formSerialize();
    /** @type {Object} setup the options for the ajax submit forms. */
    var submitOptions = {
        url: '/admin/levels/addlevelprocess.html',
        dataType: 'json',
        success: showResponse,
        data: { allowed_fields: allowedFields, levelInfo: formInfo }
    };      
    $(this).ajaxSubmit(submitOptions);
    return false;
});
...