我正在使用jquery将文件/图像上传到codeigniter控制器。 经过长时间的努力,我成功地上传了图片,但是,ajax函数有一个尴尬的行为。
问题: ajax在操作成功完成时重定向到.fail()
这是我的代码: -
Javascript - AJAX调用
$.ajax({
url : url,
type: 'POST',
data: data,
cache: false,
dataType: 'json',
processData: false,
contentType: false
}).done(function(response){
alert(response);
}).fail(function(request,status,error){
alert(request.responseText);
});
Codeigniter PHP控制器
if( $this->upload->do_upload('item_'.$content_id) ){
$file_info = $this->upload->data();
$file_name = $file_info['file_name'];
$result = $this->contents->update(array('value' => $file_name), $content_id);
if( $result ){
echo "success";
die();
}
else{
echo "fail";
die();
}
}
页面提醒:来自 .fail()函数的'success',因为已处理的语句为: alert(request.responseText)
有什么想法吗?
答案 0 :(得分:0)
您的ajax调用需要响应为json但是您发送响应作为文本尝试以json格式发送响应
if( $result ){
header('Content-Type: application/json');
echo json_encode(array('status' => 'file is uploaded'));
die();
}
else{
header('Content-Type: application/json');
echo json_encode(array('status' => 'failed to upload'));
die();
}
同时调整你的ajax代码以获得成功通话
$.ajax({
url: url,
type: 'POST',
data: data,
cache: false,
dataType: 'json',
processData: false,
contentType: false,
success: function (data) {
alert("SUCCESS: " + data.status);
},
error: function (data) {
alert("ERROR: " + data.status);
}
})