Проблема с изменением размера изображения codeigniter и ajax / json. Пожалуйста помоги! - PullRequest
0 голосов
/ 02 июля 2011

У меня есть проблема, которая сводит меня с ума.Я создаю систему CMS, которая включает загрузку изображений с помощью плагина jquery ajax (uploadify) и изменение их размера на стороне сервера в соответствии с заданными пользователем размерами с использованием класса изменения размера изображения codeigntier.

Проблема заключается в том, что иногдаизменение размера изображения на одном из изображений (до 5 изображений, отправляемых за один раз), что приводило к превышению времени ожидания функции поста ajax.Из журналов ошибок CI говорится, что один из файлов поврежден.Не совсем уверен, как или почему это происходит, но в любом случае - я пытаюсь настроить систему ошибок, при которой, если это происходит, через json отправляется ошибка, которая будет предупреждена с помощью javascript, просто попросив их повторить попытку или еще что-нибудь.Но вот проблема -

В моей модели у меня есть:

foreach($size_image as $si){
                if(!$this->resize_image($si['dimensions'],$si['fileName'],$si['oldPath'],$si['newPath'])){
                    return false;           // I can confirm this does indeed return false whenever the image resize problem occurs...                                                                          
                }
            }

В моем контроллере у меня есть:

    function save_page(){
    if($this->admin_model->save_page()){
        $return_array['error'] = '';
    }else{
        $return_array['error'] = 'Sorry, there was a problem processing one of the images.';
    }
    $return_array['success'] = true;
    echo json_encode($return_array);
    exit();
}

Всякий раз, когда работает изменение размера (и функция save_pageвозвращает true) эхо-кодирование json работает нормально и принимается на другом конце и обрабатывается JavaScript.Но НЕ когда возвращается false !!

Просто чтобы доказать, что я не глупый, я могу заменить if ($ this-> admin_model-> save_page ()) { на if (! $ this-> admin_model-> save_page ()) { (что означает, что я теперь получаю сообщение об ошибке при изменении размера DOES ) - и да, я получаю сообщение об ошибке наscreen!

Поэтому, когда возникает такая проблема с изменением размера, по какой-то причине вышеуказанная функция просто отказывается отображать json, даже если она определенно подходит к этой части скрипта.

И для абсолютногоясность, я могу сделать это:

function save_page(){
    if($this->admin_model->save_page()){
        $return_array['error'] = '';
    }else{

    //  $return_array['error'] = 'Sorry, there was a problem processing one of the images.';        

        $this->load->helper('file');
        write_file('testOutput.txt','ERROR!!!!');       // <-- and yep, I get 'ERROR' written to this file. 
        exit();         
    }
    $return_array['success'] = true;
    echo json_encode($return_array);                    // <-- ...so why the hell doesn't this work then?
    exit();
}

Почему?

Любая помощь или предложения очень приветствуются, большое спасибо заранее.

1 Ответ

0 голосов
/ 02 июля 2011

Может быть, потому что вы вернетесь

$ return_array ['success'] = true;

каждый раз, даже если это не удается?

...