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

时间:2017-02-09 06:34:22

标签: 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不工作时显示警报。我想在此处显示文件上传错误。

这是我的控制器,在不上传时处理文件上传:

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

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

3 个答案:

答案 0 :(得分:0)

AJAX错误警报仅在AJAX不工作时显示警告。这样工作正常,因为你的文件没有上传的情况不是ajax错误,它是一个正常的代码流。

要处理它,你必须返回一些状态来管理它在ajax的success中:

success: function(response)
{
    if(response == 1)
    {
        // do some thing
    }
    else
    {
        // do some thing
    }
}

PHP:

if( check here file uploads or not )
{
    echo 1;
}
else
{
    echo 0;
}

答案 1 :(得分:0)

成功检查响应内容的功能,或者在php脚本中使用http_response_code(500)来触发ajax错误功能。

答案 2 :(得分:0)

您需要发送一个标志来指定文件是否成功上传以便执行此操作从您的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 CODE

 $.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);
            }

        }
});

我希望它会对你有所帮助。