0

実際にどこが間違っているのかを理解する助けが必要です。

だから私はjQueryUIの日付ピッカー、http://jqueryui.com/datepicker/を使用しています。

このチュートリアルの一部を使用しました: http://www.phpeveryday.com/articles/jQuery-UI-AJAX-JSON-Datepicker-P1029.html

データベースのクエリに AJAX を使用しているため、データベースからの日付のみが許可されます。以下は、返される JSON です。

{"COLUMNS":["APPOINTMENT_DATE"],"DATA":[["July, 29 2013 00:00:00"]]}

以下は私のJavaScript全体です:

$(document).ready(function () {

var months = [], days = [];

$.ajax({
    type: 'get',  
    url: 'cfc/datepicker.cfc?ReturnFormat=json',  
    data: {
        method: 'getDates',
        todayDate: '07-29-2013'
        },
    contentType: 'json',
    dataType: 'json',
    success: function(response) {
        for (x = 0; x < response.DATA.length; x++) {
            months.push(response.DATA[x].month);
            days.push(response.DATA[x].day);
        }
    }
}); 

function addDates(date){
    //Weekends are NOT selectable
    if (date.getDay() == 0 || date.getDay() == 6) {
        return [false, ""];
    }

    //Using AJAX call above, all RETURNED dates are selectable
    for (x = 0; x < days.length; x++) {
        if (date.getMonth() == months[x] - 1 &&
            date.getDate() == days[x]) {
            return [true, ""];
        }
    }

    //If dates are not from above, they are NOT selectable
    return [false, ""];
}

var DP_options = {
    beforeShowDay: addDates
//      minDate: "+1"
};

$("#dateInput").datepicker(DP_options);
});

addDates 関数の下のすべてを理解しています。私が抱えている問題は、AJAX 呼び出しです。レスポンスが返ってきます、苦労したのは成功関数です。JSON 応答を使用し、それらの変数を上部のmonthsおよびdays変数にプッシュすることになっています。addDates 関数はこれらの変数を使用してそれらを有効にします。

monthsJSON 応答からdays変数に情報をプッシュするにはどうすればよいですか? それとも、私は一歩を踏み外しましたか?

4

2 に答える 2

1

Adam のアドバイスを受けて、JSON 応答を分解しました。私が犯した重要な間違いの 1 つは、チュートリアルを見ていないことと、JSON 応答が別々のMONTHDAY列を要求していることを確認しなかったことです。DATE 文字列を分割して MONTH 変数と DAY 変数を分離できると仮定しました。ないと思います。

返される JSON は次のとおりです。

{"COLUMNS":["APPOINTMENT_DATE"],"DATA":[["August, 06 2013 00:00:00"]]}

参考までに、以下は私の作業中の JavaScript です。これは、データベースから返される日付のみを選択できるようにします。

$(document).ready(function () {

var months = []; 
var days = [];

$.ajax({
    type: 'get',  
    url: 'cfc/datepicker.cfc?ReturnFormat=json',  
    data: {
        method: 'getDates'
        },
    contentType: 'json',
    dataType: 'json',
    success: function(response) {
        for(var x = 0; x < response.DATA.length; x++) {
            var monthName = {
                January: 1,
                February: 2,
                March: 3,
                April: 4,
                May: 5,
                June: 6,
                July: 7,
                August: 8,
                September: 9,
                October: 10,
                November: 11,
                December: 12
            }
            //Expected Response: {"COLUMNS":["APPOINTMENT_DATE"],"DATA":[["August, 06 2013 00:00:00"]]}
            var thisResponse = response.DATA[x]; //"August, 06 2013 00:00:00"
            var stringResponse = String(thisResponse); //Above is an Object, convert to String
            var thisMonth = String(stringResponse.split(",")[0]); //August
            var thisMonth_Num = String(monthName[thisMonth]); //Use monthName key above
            var thisDay = stringResponse.split(" ")[1]; // 06
            var thisDay = thisDay.trim(); //get rid of any spaces
                months.push(thisMonth_Num);
                days.push(thisDay);
        }
    }
}); 

function addDates(date){
    //Weekends are NOT selectable
    if (date.getDay() == 0 || date.getDay() == 6) {
        return [false, ""];
    }

    //Using AJAX call above, all RETURNED dates are selectable
    for (var x = 0; x < days.length; x++) {
        if (date.getMonth() == months[x] - 1 &&
            date.getDate() == days[x]) {
            return [true, ""];
        }
    }

    //If dates are not from above, they are NOT selectable
    return [false, ""];
}

var DP_options = {
    beforeShowDay: addDates
};

$("#dateInput").datepicker(DP_options);
});

また、x 変数を で宣言するという Pointy のアドバイスも取り入れましたvar

于 2013-08-06T20:07:23.410 に答える
0

https://stackoverflow.com/a/14162635/886591

angularJS では Ben Nadel の queryToArray 関数を使用しましたが、非常に似たようなことをしようとしていましたが、人生はずっと楽になりました。

ここの投稿をチェックしてください https://stackoverflow.com/a/14162635/886591

于 2013-08-05T22:59:31.917 に答える