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

Javascript 如何在ajax错误上显示文件上载错误消息?,javascript,php,jquery,ajax,file-upload,Javascript,Php,Jquery,Ajax,File Upload,我想在ajax警报错误消息中显示文件上载错误 这是我的ajax: $.ajax({ url : url, type : 'POST', cache : false, contentType : false, processData : false, data : all_data, dataType : 'JSON',

我想在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不工作时显示警报。这很好,因为您的文件没有上传不是ajax错误,而是正常的代码流

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

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


AJAX错误警报仅在AJAX不工作时显示警报。这很好,因为您的文件没有上传不是ajax错误,而是正常的代码流

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

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


在成功函数中检查响应内容,或在php脚本中使用
http\u response\u code(500)
触发ajax错误函数。

在成功函数中检查响应内容,或使用
http\u response\u code(500)
在php脚本中触发ajax错误函数。

您需要发送一个标志来指定文件上载是否成功。要执行此操作,请从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);
            }

        }
});

我希望它能对您有所帮助。

您需要发送一个标志来指定文件上载是否成功。要执行此操作,请从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);
            }

        }
});

我希望它能帮助您。

那么,这是不可能的吗?不可能,成功块中显示错误取决于php脚本返回的响应。如何将文件上传错误文本返回到ajax成功块?我想返回
$this->upload->display\u errors()的文本。
。所以用户知道为什么数据没有上传那么,这是不可能的吗?不可能,成功块中的显示错误取决于php脚本返回的响应如何将文件上传错误文本返回到ajax成功块?我想返回
$this->upload->display\u errors()
的文本。这样用户就知道为什么数据没有上传。。在我的AJAX成功中,有一个成功插入数据的警报。如果文件未上载,则不会插入数据,但ajax正在工作。如何将
echo$this->upload->display_errors()
发送到我的ajaxx success/error。因此,如果数据没有上传,就会有一条消息说明为什么数据没有上传。扩展太大或错误。抱歉这么长的评论:要显示错误,您需要使用$this->upload->display_errors()从服务器端发送错误,然后在jquery中,如果成功标志为0,您将在json响应中获得upl_错误字符串,您可以使用该字符串显示错误。检查我的更新答案。它在JSON数据的第1行第1列显示错误
SyntaxError:JSON.parse:unexpected字符。错误应该是
文件太大
,因为我上载的文件超过了允许的大小ADD console.log(数据)在您的成功回调中,并检查您从服务器得到的响应。它应该是这样的{“success”=0,“upl_error”:“your error message”}(如果发生错误),我把它放在AJAX error中,它就工作了<代码>错误:函数(jqXHR,textStatus,errorshown,data){toastr.options={closeButton:false,progressBar:false,showMethod:'slideDown',timeOut:3000};toastr.error(errorshown,'error…');if(data.upl_error){toastr error(data.upl_error,'error…);}
Umm..在我的AJAX成功中,有一个成功插入数据的警报。如果文件未上载,则不会插入数据,但AJAX正在工作。如何发送
echo$this->upload->display_errors()
至我的ajaxx成功/错误。因此,如果数据未上载,则会显示一条消息,说明其未上载的原因。扩展名太大或错误。抱歉,评论太长:要显示错误,您需要使用$this->upload->display_errors()从服务器端发送错误然后在jquery中,如果成功标志为0,您将在json响应中获得upl_错误字符串,您可以使用该字符串显示错误。检查我的更新答案。它显示错误
SyntaxError:json。解析:json数据第1行第1列出现意外字符
。错误应该是
文件太大
,因为我上载的文件超出了允许的范围sizeAdd console.log(数据)在您的成功回调中,并检查您从服务器得到的响应。它应该是这样的{“success”=0,“upl_error”:“您的错误消息”}(如果发生错误),我将它放在AJAX error中,它就工作了。
error:function(jqXHR,textStatus,ERRORSHORN,data){toastr.options={closeButton:false,progressBar:false,showMethod:'slideDown',超时:3000};toastr.error(ErrorSprown,'error…');if(data.upl_error){toastr.error(data.upl_error,'error…');}