从JQuery调用CodeIgniter方法

时间:2018-08-01 05:53:18

标签: javascript php codeigniter

我想使用jquery调用codeigniter方法。我的ajax通话正常,但出现错误。我已经添加了控制器,模型,ajax调用和错误。

根据:

$("body").on("click", ".call-ajax", function() {
    // obtém o valor do link
    console.log("chamada ajax");

    var caminho = "http://localhost/xxxxx/public/uploads/anexos/";


    data = {
      id_rec: $(this).data("id_rec"),
      anexo: caminho + $(this).data("anexo")
    };

    console.log(data);

    // AJAX para o controller
    $.ajax({
      url: "reclamacao/delete_anexo",
      data: data,
      type: "POST"
    }).done(function(resp) {
        console.log("deleção OK");
      // Display the resposne
      //$("#result").append($("<li/>").html(resp));
    });
  });

正确调用

Check Image 1

但是会发生此错误:

Check image 2

我的控制器代码

public function delete_anexo($id, $file)
{
    try
    {
        if (!$this->input->is_ajax_request())
        {
            $this->output->set_status_header(404);
            return;
        }
        if (!$this->anexo_model_reclamacao->delete_anexo($id, $file))
            throw new Exception("Erro ao excluir", 1);

        $alert = 'Operação Realizada com sucesso.';
    }
    catch (exception $e)
    {
        $alert = $e->getMessage();
    }

    bootbox_alert($alert);
}

型号代码:

 public function delete_anexo($id, $file) {
        $this->db->delete($this->table, array('id_reclamacao' => $id, 'file' => $file));
        return true;
    }

2 个答案:

答案 0 :(得分:0)

您发布的第二个错误图像清楚地表明您的方法调用中缺少第二个参数,请仔细检查在进行Ajax调用时是否同时发布了两个参数。

答案 1 :(得分:0)

控制器public function delete_anexo($id, $file)中的此声明假定$id$file在url中,例如reclamacao/delete_anexo/{$id}/{$file}显然不是data jQuery声明所需要的。因此,您需要像这样捕获post var:

public function delete_anexo()
{
    try
    {
        if (!$this->input->is_ajax_request()) {
            $this->output->set_status_header(404);
            exit;
        }
        $id = $this->input->post('id_rec');
        $file = $this->input->post('anexo');
        if (is_null($id) || is_null($file)) {
            throw new Exception('Parameters missing');
        }
        if (!$this->anexo_model_reclamacao->delete_anexo($id, $file)) {
            throw new Exception("Erro ao excluir", 1);
        }
        $alert = 'Operação Realizada com sucesso.';
    }
    catch (exception $e)
    {
        $alert = $e->getMessage();
    }

    bootbox_alert($alert);
}