Javascript 如何在ajax错误上显示文件上载错误消息?
我想在ajax警报错误消息中显示文件上载错误 这是我的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({
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…');}