首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >来自jquery ajax post请求的codeigniter input->post()为空

来自jquery ajax post请求的codeigniter input->post()为空
EN

Stack Overflow用户
提问于 2016-06-12 15:08:12
回答 3查看 1.6K关注 0票数 -1

我在运行时使用数据库数据填充了几行数据。每行都有一个按钮。单击按钮时,我想从数据库中删除该行。我在那个按钮上放了一个data-id。单击该按钮,向php发送一个ajax请求。但是我在php中得到了null id。下面是我使用的代码。

HTML

代码语言:javascript
复制
<span id="delete_btn" class="btn btn-default" data-id="<?php echo $id; ?>">
    <i class="glyph-icon icon-close"> Delete</i>
</span>

JavaScript

代码语言:javascript
复制
$('#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;
});

Client.php

代码语言:javascript
复制
public function delete_client() {
    if ($this->input->method(TRUE) == 'POST') {
        $id = $this->input->post('id');

        if (is_numeric($id)) {
            $id = intval($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;
    }
}

javascript控制台打印一个用户id。但是在ajax响应控制台中打印

代码语言:javascript
复制
Object {is_error: true, message: null}

我做错了什么?对不起,我的英语很差。提亚

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-12 16:34:44

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

代码语言:javascript
复制
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中删除不必要的参数

代码语言:javascript
复制
$('#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;
});

以下内容已删除。

代码语言:javascript
复制
        async: false,
        cache: false,
        contentType: false,
        processData: false,

当您的表单包含图像等时使用contentTypeprocessData等。此处不需要

票数 1
EN

Stack Overflow用户

发布于 2016-06-12 15:23:51

试一试

代码语言:javascript
复制
  var client_id = $(this).attr('data-id');

而不是

代码语言:javascript
复制
  var client_id = $(this).data('id');
票数 0
EN

Stack Overflow用户

发布于 2016-06-12 16:47:52

首先尝试发送Ajax请求而不附加到click event以及{ too:'far'}数据,然后检查服务器端的bar并回复我。我想知道为什么多个元素具有相同的is属性。

代码语言:javascript
复制
<span id="delete_btn" class="btn btn-default".. 

而不是class="delete_btn“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37771648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档