Плагин jQuery Form - есть ли способ загрузить страницу на Ajax? - PullRequest
1 голос
/ 07 ноября 2011

Когда пользователь загружает фотографию, она загружается через контроллер (profile / upload_picture), который выполняет проверку для типа файла, размера файла и т. Д.

Если проверка возвращает ошибку, ошибка отображается через Ajaxна переднем конце.Это работает.

Но если проверка не возвращает ошибок, я хотел автоматически загрузить другой контроллер / представление, которое позволяет пользователю обрезать изображение (profile / crop_picture).

Возможно ли это с помощью Jqueryиспользуя плагин формы malsup ?

Приведенный ниже код не работает как при успехе, я застреваю на странице загрузки.

Вот мой код:

jВопрос в поле зрения

$("#file_select").change(function(){

        var options = {
        type:           'post',
        dataType:       'json',
        resetForm:      true,
        beforeSubmit:       function(){
                                $('#loading').show();
                                $('#validation_message').html('');
                        },
        success:            function(data){

                                if (data.success == 0) {
                                    $('#loading').hide();
                                    $('#validation_message').html(data.message).fadeIn();

                                } else {
                                    $('body').load('profile/crop_picture');
                                }
                        }
    };

    $('#upload_form').ajaxSubmit(options);
});

контроллер upload_picture

function upload_picture()
{
    if ($this->input->post('upload')) {

        $upload = $this->profile_model->upload_picture();

        if ($upload) { // if there are upload errors

            $val['success'] = '0';
            $val['message'] = '<div class="error_message" style="margin:20px 0">' . $upload . '</div>';
            echo '<textarea>' . json_encode($val) . '</textarea>'; 
        } else {

                   //redirecting here seems to have no effect

                }
    }

    $data['selector'] = 'picture';
    $data['records']  = $this->profile_model->get_user_data();

    $string = $this->load->view('account/prf/profile_crop_vw', $data, TRUE);
    $this->template->write('content', $string);
    $this->template->render();
}

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Вы можете попробовать здесь функцию загрузки окна javascript.Вот так:

$("#file_select").change(function(){

   var options = {
      type:          'post',
      dataType:      'json',
      resetForm:     true,
      beforeSubmit:  function() {
                        $('#loading').show();
                        $('#validation_message').html('');
                     },
      success:       function(data) {
                        if (data.success == 0) {
                           $('#loading').hide();
                           $('#validation_message').html(data.message).fadeIn();
                        } else {
                           window.location.href='profile/crop_picture';
                           location.reload();   
                        }
                    }
   };

   $('#upload_form').ajaxSubmit(options);

});

Надеюсь, это решит вашу проблему.

0 голосов
/ 07 ноября 2011

Возможно, вы могли бы сделать простое перенаправление на страницу обрезки. Я не вижу, как вы справляетесь с загруженным изображением, но вы всегда можете сохранить идентификатор изображения или URL-адрес, или что-либо другое, что вы используете в качестве переменной flashdata сессии, и использовать ее на странице обрезки.

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