javascript - 如何在ajax错误时显示文件上传错误消息?

标签 javascript php jquery ajax file-upload

我想在 ajax 警报错误消息中显示文件上传错误。

这是我的ajax:

$.ajax({
        url         : url,
        type        : 'POST',
        cache       : false,
        contentType : false,
        processData : false,
        data        : all_data,
        dataType    : 'JSON',
        success     : function(data)
        {
            if (data.result != 0) {
                toastr.options = {
                    closeButton : false,
                    progressBar : false,
                    showMethod  : 'slideDown',
                    timeOut     : 3000
                };

                toastr.success('UPLOAD SUCCESS', 'Attention...');

                if(activeid != 0){
                    if($("#tl_responder").val() != "" && $("#tl_dept").val() != "" && $("#tl_jawab").val() != ""){
                        toastr.success('MAIL IS SENT', 'ATTENTION...');
                    }
                }

            } else { window.location.href = "<?php print base_url(); ?>complaint/detail?id=" + data.result + "#reloadafteradd"; }

        },
        error: function (jqXHR, textStatus, errorThrown, data)
        {
            toastr.options = {
                closeButton : false,
                progressBar : false,
                showMethod  : 'slideDown',
                timeOut     : 3000
            };
            toastr.error(errorThrown, 'Error...'); //THIS IS THE AJAX ERROR ALERT
           if(!errorThrown){ toastr.error(data.upl_error, 'Error...'); }//This is not working

        }
    });

AJAX 错误警报仅在 AJAX 不工作时显示警报。我想在这里显示文件上传错误。

这是我的 Controller ,在不上传时处理文件上传:

if ( ! $this->upload->do_upload('file')){

        $response_array = array ('upl_error' => $this->upload->display_errors());
        echo json_encode($response_array);
        //return false;
        }

最佳答案

您需要发送一个标志来指定文件是否上传成功,要从您的 php 代码中发送一个成功标志,如下所示:

PHP 代码

if ( ! $this->upload->do_upload('file')){
    // file not  uploaded
    $response_array = array ('success'=0,'upl_error' =>   $this->upload->display_errors('', ''));
    echo json_encode($response_array);

}
else
{
  // file uploaded
   echo json_encode(array("success"=>1));
}

然后在你的ajax成功回调函数中,你需要像这样检查成功标志

jQuery 代码

 $.ajax({
        url         : url,
        type        : 'POST',
        cache       : false,
        contentType : false,
        processData : false,
        data        : all_data,
        dataType    : 'JSON',
        success     : function(data)
        {
           // if file upload success
            if (data.success == 1) {

               alert("File uploaed success");

            } 
            // file not uploaded
            else { 
                alert(data.upl_error);
            }

        }
});

希望对你有帮助。

关于javascript - 如何在ajax错误时显示文件上传错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42129804/

相关文章:

jquery - 如何仅删除正确的文本输入?

javascript - 将自动完成 HTML 建议插入搜索栏中

javascript - 这是顺序运行代码片段的好方法吗?

javascript - 单击按钮时代码无法正常执行 php 文件

php - 如何在不拉伸(stretch)的情况下以特定尺寸显示图像?

Jquery 父框架

javascript - jquery.scroll显示:none; not working

javascript - 在移动 chrome 上调整窗口大小时 flexbox 中的奇怪行为

php - 使用不同的操作符获取mysql数据

javascript - 使用 JS、jQuery,如何将 AJAX 响应保存到(文本)文件?