成功上传后ajax响应失败

时间:2014-07-22 20:49:16

标签: jquery ajax codeigniter

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

有什么想法吗?

1 个答案:

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