我有一個讓我發瘋的問題。我正在構建一個CMS系統,其中包括使用jquery ajax插件(uploadify)上傳圖像,並使用codeigntier的圖像調整大小類根據用戶指定的尺寸調整服務器端的大小。codeigniter圖像大小調整和ajax/json問題。請幫忙!
問題是偶爾(大約7次之一)圖像調整大小失敗的圖像之一(最多5次一次發送圖像)導致ajax後功能超時。從CI的錯誤日誌中可以看出其中一個文件已損壞。不太清楚這是怎麼發生的,但無論如何 - 我試圖建立一個錯誤系統,如果發生這種情況,通過json發送一個錯誤信息,這個錯誤信息會被javascript提醒,只是要求他們再試一次或者別的什麼。但這裏是problem-
在我的模型,我有:
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。但不是當它返回假!
只是爲了證明我不傻,我可以代替如果($這個 - > admin_model-> save_page()){與如果(!$這個 - > admin_model-> save_page()){ (這意味着當調整大小工作時,我現在得到錯誤信息) - 是的,我在屏幕上看到錯誤信息!
因此,無論何時出現這個調整大小問題,出於某種原因,上述功能只是拒絕迴應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();
}
爲什麼啊爲什麼啊,爲什麼?
非常歡迎任何幫助或建議,非常感謝提前。
嗨trix,感謝您的回覆。 '成功'只是表明json數據已經交付。通過檢查錯誤是否被設置來確定服務器端功能的實際成功或失敗。 – Inigo
所以你不會得到服務器對你的ajax調用的響應。 請看看這篇文章在SO:http://stackoverflow.com/questions/578190/can-file-uploads-time-out-in-php – trix