codeigniter input-> post()从jquery ajax post请求中为null

时间:2016-06-12 07:08:12

标签: javascript php jquery ajax codeigniter

我在运行时使用数据库数据填充了几行数据。每行都有一个按钮。单击按钮我想从数据库中删除该行。我在该按钮上放了一个String。点击该按钮向php发送ajax请求。但我在php中得到 buffer=str.split("\t"); for (int x=0;x<buffer.length;x++){ this.lab[x][y]=Integer.parseInt(buffer[x]); } id。以下代码我使用。

HTML

data-id

的JavaScript

null

Client.php

<span id="delete_btn" class="btn btn-default" data-id="<?php echo $id; ?>">
    <i class="glyph-icon icon-close"> Delete</i>
</span>

javascript控制台打印用户ID。 但在ajax响应控制台打印

$('#feedbackTable').on('click', '#delete_btn', function (event) {

     var client_id = $(this).data('id');


    console.log(client_id); // I get the exact id
    $.ajax({
        url: url + 'client/delete',
        type: 'POST',
        data: {'id' : client_id},
        dataType: 'json',
        async: false,
        cache: false,
        contentType: false,
        processData: false,
        error: function (error_data) {
           console.log(error_data);
        },
        success: function (data) {
            console.log(data);
        }
    });
    return false;
});

我做错了什么?抱歉我的英语不好。 TIA

3 个答案:

答案 0 :(得分:1)

您可以通过类型转换来转换值,而不是使用is_numeric()。试试以下

public function delete_client() {
    if ($this->input->method(TRUE) == 'POST') {
        $id = (int) $this->input->post('id');

        if (!empty($id)) {
            echo json_encode(array(
                "is_error" => false,
                "message" => $id
            ));
            return;
        } else {
            echo json_encode(array(
                "is_error" => true,
                "message" => $id
            ));
            return;
        }
    } else {
        echo json_encode(array(
            "is_error" => true,
            "message" => "Invalid request"
        ));
        return;
    }
}

其次从你的ajax中删除不必要的参数

$('#feedbackTable').on('click', '#delete_btn', function (event) {

     var client_id = $(this).data('id');


    console.log(client_id); // I get the exact id
    $.ajax({
        url: url + 'client/delete',
        type: 'POST',
        data: {'id' : client_id},
        dataType: 'json',
        error: function (error_data) {
           console.log(error_data);
        },
        success: function (data) {
            console.log(data);
        }
    });
    return false;
});

删除后。

        async: false,
        cache: false,
        contentType: false,
        processData: false,
当您的表单包含图片等时使用

contentTypeprocessData等。此处不需要

答案 1 :(得分:0)

尝试

  var client_id = $(this).attr('data-id');

而不是

  var client_id = $(this).data('id');

答案 2 :(得分:0)

首先尝试发送Ajax请求而不附加点击事件以及{too:&#39; far&#39;}数据然后检查服务器端的栏并回复我。 想知道多元素具有相同属性的原因。

<span id="delete_btn" class="btn btn-default".. 
而不是      类=&#34; delete_btn&#34;