【问题标题】:Null data when posting getDates from Multidatespicker into jquery ajax post request将 Multidatepicker 中的 getDates 发布到 jquery ajax 发布请求时为空数据
【发布时间】:2017-05-23 22:21:48
【问题描述】:

HTML:

    <script>
    $(function () {
        var min = new Date(2017, 03, 01);
        var max = new Date(2017, 05, 30);
        $("#datepicker").multiDatesPicker({
            maxPicks: 21, numberOfMonths: [1, 3], dateFormat: 'd.m.y', defaultDate: '1.4.17', minDate: min, maxDate: max, onSelect: function (dateText, inst) {
                $("#save").text("Speichern").removeClass("btn-success").addClass("btn-default")
            }
        });
        $("#datepicker").addClass("center");
    });
</script>
<script>
    function speichern() {
        var url;
        var success;
        var data;
        var error;
        var dataType = "text";
        $("#save").text("Wird gespeichert...");
        success = function (ergebnis) {
            $("#save").text("Gespeichert").removeClass("btn-default").addClass("btn-success");
        };
        url = "saver/save";
        data = {'dates[]': $("#datepicker").multiDatesPicker("getDates")};
        error = function (event, jqXHR, thrownError) {
            alert(thrownError.toLocaleString());
        }
        $.post({url: url, success: success, data: data, error: error, dataType: dataType});
    }
</script><p>
<div id="datepicker"></div></p>
<button id="save" class="btn btn-default" style="float:right;margin-bottom: 10px" onclick="speichern()">Speichern</button>

PHP:

<?php

class saver extends CI_Controller
{
    function save()
    {
        $dates = $this->input->post['dates[]'];
        var_dump($dates);
        echo $dates;
        //echo "erfolgreich gespeichert";
    }
}

$dates 是空的,但我真的不知道为什么!还为 post['dates[]'] 尝试了 'data'、'dates'、'data'...,但没有任何效果。 data 是一个对象(出于某种原因?),包含具有所选日期的数组。 PHP 脚本的响应为 NULL。发送参数例如:dates[]:"12.6.17"

编辑:它必须是 CodeIgniter 错误,因为 $_POST 给了我想要的东西!

【问题讨论】:

    标签: jquery ajax codeigniter jquery-multidatespicker


    【解决方案1】:

    在 javascript 数组中创建为:

    var dates = [] OR var dates = new Array();
    

    所以改变你的脚本代码如下:

    <script>
        function speichern() {
            var url;
            var success;
            var data;
            var error;
            dates = [];
            dates = $("#datepicker").multiDatesPicker("getDates");
            var dataType = "text";
            $("#save").text("Wird gespeichert...");
            success = function (ergebnis) {
                $("#save").text("Gespeichert").removeClass("btn-default").addClass("btn-success");
            };
            url = "saver/save";
            data = {'dates':dates};
            error = function (event, jqXHR, thrownError) {
                alert(thrownError.toLocaleString());
            }
            $.post({url: url, success: success, data: data, error: error, dataType: dataType});
        }
    </script>
    

    在 php 中:

    $date = $this->input->post('dates');
    print_r($date);
    

    希望对你有帮助。

    【讨论】:

    • 我按照您的建议更改了脚本,但结果是一样的。问题不在发送端,而在接收端,因为数据传输成功了。
    猜你喜欢
    • 1970-01-01
    • 2018-07-09
    • 2011-06-02
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    相关资源
    最近更新 更多