Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 成功上传后ajax响应失败_Jquery_Ajax_Codeigniter - Fatal编程技术网

Jquery 成功上传后ajax响应失败

Jquery 成功上传后ajax响应失败,jquery,ajax,codeigniter,Jquery,Ajax,Codeigniter,我正在使用jquery将文件/图像上传到codeigniter控制器。 经过长时间的努力,我成功地上传了图像,但是,ajax函数出现了一个笨拙的行为 问题:操作成功完成时,ajax重定向到.fail() 这是我的密码:- Javascript-AJAX调用 $.ajax({ url : url, type: 'POST', data: data, cache: false,

我正在使用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)


有什么想法吗?

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

状态和错误参数的内容是什么?至于json响应,我的大多数ajax调用都设置为数据类型:“json”,但为了简单起见,我总是从服务器上调用“success”或“fail”。至于成功和错误,我曾被建议使用新的jquery函数(done&fail)。在一篇最佳实践文章中。很抱歉,无法为此提供链接。无论如何,谢谢你的帮助