當用戶上傳照片,它是通過一個控制器(簡檔/ upload_picture)運行用於文件類型,文件大小驗證等jQuery表單插件 - 有沒有辦法在Ajax成功上加載頁面?
如果驗證返回一個錯誤,則通過Ajax顯示在前面的誤差上傳結束。這工作。
但是,如果驗證沒有返回錯誤,我想自動加載另一個控制器/視圖,允許用戶裁剪圖片(profile/crop_picture)。
這是可能的通過jquery使用malsup's Form plugin?
下面的代碼不能成功,我仍然堅持上傳頁面。
這裏是我的代碼:
的jQuery鑑於
$("#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();
}
你能確認你的成功回調是否運行?這聽起來像是在兩種情況下都運行,因爲你說在出現驗證錯誤時可以看到錯誤消息。所以真正的問題不在於「$('body')。load('profile/crop_picture');」工作中?您可以在該行之前放置一個警報,以確認其運行?然後,你也可以添加一個完成的回調,看看你的ajax方法crop_picture是否工作:$('body')。load('profile/crop_picture',function(txt,txtStatus){ alert('Load loaded:' + txtStatus); } – Nick