2017-02-09 126 views
1

我想在ajax警报错误消息上显示文件上传错误。如何在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; 
     } 

回答

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

然后在你的阿贾克斯成功回调函数,你需要检查这样的成功标志

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

     } 
}); 

我希望它能帮助你。

+0

嗯..在我的AJAX成功,有一个成功插入数据的警报。如果文件没有上传,数据不会被插入,但ajax正在工作。我如何将'echo $ this-> upload-> display_errors()'发送给我的ajaxx成功/错误。所以,如果数据没有上传,就会有一条消息说明为什么没有上传。太大或错误的扩展名。对不起,长评论:D – Shota

+0

要显示错误,您需要使用$ this-> upload-> display_errors()从服务器端发送错误,然后在jquery中,如果成功标志为0,您将在json响应中获得upl_error字符串,您可以使用它显示错误。 检查我更新的答案。 –

+0

谢谢。我会试一试 – Shota

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; 
} 
+0

那么,它是不可能的? – Shota

+0

没有它的可能,在成功阻止显示错误取决于PHP脚本返回的响应 –

+0

如何将file_upload错误文本返回到ajax成功块? – Shota

0

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