【问题标题】:POST data to php controller with DataTables Ajax使用 DataTables Ajax 将数据发布到 php 控制器
【发布时间】:2016-02-24 16:58:13
【问题描述】:

我正在尝试使用 Jquery 的 DataTables 库将一些简单的数据发布到作为 SQL 查询的控制器。此查询将返回 JSON,我将继续我的快乐之路,然后对数据做我想做的事情。

在使用内置 jquery AJAX 时,我对此没有任何问题。这是工作代码:

$.post('/rx/dostuff', {fromDate: from_date, toDate: to_date}, function(data){                
            var dataObject = JSON.parse(data);
            if(data !== "[]"){
                $("#display_area").empty();
                $("#display_area").append("<div> " + ...

            blah blah blah

所以这很好用,我发布了 from_date 和 to_date,我可以在 Network Params 选项卡中看到它被发送为

fromDate: 02/01/2016
toDate:   02/24/2016

我的 PHP 控制器接收到它,我做了一些语句绑定以保证它的安全,然后,我的结果以 JSON 编码返回给我。

当我尝试使用 DataTables 库执行此操作时,我的参数最终会像这样发送:

fromDate=02%2F01%2F2016&toDate=02%2F24%2F2016

PHP 引发了地狱,并发出警告说我的控制器缺少参数 1。

我的问题是,为什么 DataTables 会这样发送参数?我的发送方式是否错误?

这是我的 DataTables AJAX 代码:

$('#dataTable').DataTable({
        ajax: {
            url: "/rx/dostuff",
            type: "POST",
            contentType: "application/json",
            data: {
                "fromDate": from_date,
                "toDate": to_date
            }
        },
        columns: [
            { data: 'col'},
            { data: 'col'},
            { data: 'col'},
            { data: 'col'}
        ]
    });

非常感谢任何帮助!

【问题讨论】:

    标签: jquery json ajax post datatables


    【解决方案1】:

    删除contentType: "application/json"

    该参数定义了向服务器发送数据时的格式。默认值为“application/x-www-form-urlencoded; charset=UTF-8”,根据您之前使用 $.post() 的内容,它应该适合您。

    更多信息请参见$.ajax()

    【讨论】:

    • 谢谢,这确实是导致奇怪的帖子参数的原因。如此简单!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多