有没有一种方法可以在PHP出现错误的情况下停止ajax进程


Is there a way to stop an ajax process in case there is an error with PHP?

我对Firefox 45有问题。它总是说$_FILES['imagem']是未定义的,是null,即使之前已经从数据库中选择并显示了图像。只有在版本45,我认为这是一个错误。

编辑过程是通过Ajax调用的,由于这个错误,Ajax一直在加载。我想知道是否有办法停止它的进程并在视图中显示错误。

$FILES = $_FILES;
$count = count($_FILES['imagem']['name']) - 2;
for ($i = 0; $i <= $count; $i++) {
    $_FILES['imagem']['name'] = $FILES['imagem']['name'][$i];
    $_FILES['imagem']['name'] = $FILES['imagem']['name'][$i];
    $_FILES['imagem']['type'] = $FILES['imagem']['type'][$i];
    $_FILES['imagem']['tmp_name'] = $FILES['imagem']['tmp_name'][$i];
    $_FILES['imagem']['error'] = $FILES['imagem']['error'][$i];
    $_FILES['imagem']['size'] = $FILES['imagem']['size'][$i];
    if (isset($_FILES['imagem']) && $_FILES['imagem']['name'] !== '') {
        $config['file_name'] = $id . '_' . $_FILES['imagem']['name'];
        $config['upload_path'] = './uploads/carros/imagens/';
        $config['allowed_types'] = 'jpg|jpeg|png';
        $config['overwrite'] = true;
        $imagem = array();
        $imagem['id_carro'] = $id;
        $imagem['imagem'] = $config['file_name'];
        $this->upload->initialize($config);
        $this->upload->do_upload('imagem');
        $this->Imagens_carro_model->insert($imagem);
    }
    //
    // Apagar caso haja.
    if ($this->input->post('nome_imagem')[$i] === '') {
        $this->Imagens_carro_model->delete($this->input->post('id_imagem')[$i]);
    }
}

以上是生成错误的代码的一部分:

严重性:通知

消息:未定义的索引:imagem

文件名:controllers/Carros.php

线路编号:161

我想我不能用error做任何事情,因为它实际上成功了,而且错误发生在PHP部分,当时它没有找到imagem索引。建议?

如果您从PHP发送精心策划的响应,您可以检查响应,例如,在成功的操作中发送json响应,如(这可能不是问题的准确答案,而是帮助OP处理ajax错误的想法):

if(somethingWasSuccessfull) {
    $response = [
        'success' => true,
        'message' => 'something was successful!'
    ];
}
else {
    $response = [
        'success' => false,
        'message' => 'something was not successful!'
    ];
}
echo json_encode(($response);

因此,当您在客户端收到done/success回调的响应时,您可以检查success的值,例如:

$.ajax(...)
.done(function(response) {
    // Request succeeded
    // Probably parse the response
    if(response.success) {
        // Successfull, status code is 200
    }
    else {
        // Not successfull, status code is 200
    }
})
.fail(function(response) {
    // Error happened..., status code is not 200
})
.always(function(response) {
    // Perform some common tasks
});
相关文章: