0

アプリケーションのユーザー インターフェイスを構築する JavaScript 関数があります。

まず、必要なすべての要素を div に追加します。そのうちの 1 つは jqgrid です。

次に例を示します。

    //Generate the controls
    var c = '';
        c += '<table>';
        c += '<tr>';
        c += '<td><label for="from_date">Start Date</label><td>';
        c += '<td><input type="text" id="from_date"/></td>';
        c += '<td><label for="to_date">End Date</label><td>';
        c += '<td><input type="text" id="to_date"/></td>';              
        c += '</tr>';
        c += '</table>';

    //Perform an ajax call update date pickers
    $.ajax({
        url: "php/daily_schedule/daily.schedule.get.date.limits.php",
        dataType: "json",
        success: function(data) {

        //Update the values of the inputs
        $("#from_date").val(data.MAX);
        $("#to_date").val(data.MAX);

        //Split json results to pass new date objects
        var max_array = data.MAX.split('-');

        var max_yy    = max_array[0];
        var max_mm    = max_array[1]-1;
        var max_dd    = max_array[2];

        var min_array = data.MIN.split('-');

        var min_yy    = min_array[0];
        var min_mm    = min_array[1]-1;
        var min_dd    = min_array[2];

        //Initiate the from date picker
        $( "#from_date" ).datepicker({
                        dateFormat :"yy-mm-dd",
                        defaultDate: new Date(max_yy, max_mm, max_dd),
                        maxDate: new Date(max_yy, max_mm, max_dd),
                        minDate: new Date(min_yy, min_mm, min_dd),                                                                                                           
                        changeMonth: false,
                        numberOfMonths: 1,
                        onClose: function( selectedDate ) {
                                        $( "#to_date" ).datepicker( "option", "minDate", selectedDate );
                        },
                        onSelect:function(){

                            load_FLT();

                        }

        });

        //Initiate the to date picker                                                       
        $( "#to_date" ).datepicker({
                        dateFormat :"yy-mm-dd",
                        defaultDate: new Date(max_yy, max_mm, max_dd),
                        maxDate: new Date(max_yy, max_mm, max_dd),
                        minDate: new Date(min_yy, min_mm, min_dd),                                                                                                                              
                        changeMonth: false,
                        numberOfMonths: 1,
                        onClose: function( selectedDate ) {
                                        $( "#from_date" ).datepicker( "option", "maxDate", selectedDate );
                        },
                        onSelect:function(){

                            load_FLT();

                        }

        });         

        }

    });


    //Append the controls
    $('#daily_schedule_core_filters_container').append(c)

    //Generate grid elements
    $('#daily_schedule_core_grid_container').append('<table id="daily_schedule_grid"></table>')
    $('#daily_schedule_core_grid_container').append('<table id="daily_schedule_grid_pager"></table>')

次に、グリッドを追加します。

    //Create the daily schedule grid
    jQuery("#daily_schedule_grid").jqGrid({
        url:'php/daily_schedule/daily.schedule.grid.php',
        datatype: "json",
        hidegrid: false,

などなど

私の問題は、これをグリッドに追加することです:

        postData: {
            df: function() { return $('#from_date').val()},
            dt: function() { return $('#to_date').val()}
        },
        mtype: 'POST',

そして、未定義の値として POST を送信し続けます。

私が間違っていることについてのアイデアはありますか?

4

1 に答える 1

0

.done()をajax呼び出しに適用し、done内にグリッド作成を含めることで問題が解決しました。とにかくありがとう!

于 2013-01-21T15:40:08.130 に答える