2013-05-05 2 views
1

gldatepicker.I gldatepicker.i 사용하여 gldatepicker에 대한 gdatepicker에 대한 데이터베이스에서 일부 설정을로드 할 요일, 특별한 날짜 etc.NowateJow 코드 : offdays가 작동하지 않는, 이제 우주력하루 및 특별 날짜 선택 gdatepicker에서 설정하는 아약스에 의해

var showCalender = function (startDate, endDate, selectDay, offdays) { 
    var dd = $('#mydate').glDatePicker({ 
     showAlways: true, 
     allowMonthSelect: true, 
     allowYearSelect: false, 
     prevArrow: '\u25c4', 
     nextArrow: '\u25ba', 
     cssName: 'darkneon', 
     selectableDOW: selectDay, 
     dowOffset: 0, 
     selectedDate: new Date(), 
     selectableDateRange: [{ 
      from: new Date(startDate), 
      to: new Date(endDate) 
     }, ], 
     specialDates: offdays 
    }); 
}; 

을 바르게 working.selectDay 종료 날짜 :

$(document).ready(function() { 
    loadAllSettings(); 
}); 
var loadAllSettings = function() { 
    startDate = ''; 
    endDate = ''; 
    selectDay = ''; 
    offdays = ''; 

    $.ajax({ 
     url: "bs_client_function.php", 
     type: "post", 
     dataType: "json", 
     data: { 
      action: 'getDateRange' 
     }, 
     success: function (html) { 
      // alert(html.start); 
      startDate = Date.parse(html.start); 
      endDate = Date.parse(html.end); 
     } 

    }); 
    $.ajax({ 
     url: "bs_client_function.php", 
     type: "post", 
     dataType: "json", 
     data: { 
      action: 'getOffdays' 
     }, 
     success: function (html) { 
      i = 0; 
      offdays = '['; 
      while (i < html.length) { 
       offdays = offdays + { 
        date: new Date(html[i]), 
        repeatYear: false, 
        cssClass: 'noday' 
       }; 
       i = i + 1; 
      } 
      offdays = offdays + ']'; 
     } 

    }); 
    $.ajax({ 
     url: "bs_client_function.php", 
     type: "post", 
     data: { 
      action: 'getDays' 
     }, 
     success: function (html) { 
      var data = $.parseJSON(html); 
      // alert("[" + data + "]"); 
      selectDay = '[' + data + ']'; 
      // alert(selectDay); 
      showCalender(startDate, endDate, selectDay, offdays); 
     } 

    }); 
    alert(selectDay); 
    console.log('selectDay' + selectDay); 

}; 

나는 모든 데이터가 correctlly 내 공연 캘린더 기능을 recommanded.In gldatepicker 같은 형식의입니다 확인했다. 나는 selectDay를 콘솔에 출력한다 : [1,2,3]하지만 woking이 아니다. 나는 무엇을 놓치고 있는지, 또는 옳은 방법으로해야한다. 미리 감사드립니다 ...

+1

당신이 fiddl을 만들 수 있습니다 귀하의 끝에 추가 작업의 작은 비트 : 만 specialDates 옵션이 필요로하는 개체에

에주의 e는 사용중인 코드와 라이브러리를로드합니다. 그렇다면 특히 gldatepicker 라이브러리에 익숙하지 않은 사람들은 아마도 – gillyspy

+0

을 도울 수 있지만 먼저 AJAX (비동기 코드)에 의존하는 동기식 코드가 있다는 것을 알 수 있습니다. promise 모델이나 콜백 모델을 사용하고 비동기 메소드에 따라'showCalendar' 호출을해야합니다. – gillyspy

+0

thanks-gillyspy를 사용하여 빠른 응답을 얻으십시오. –

답변

0

문제는 어떻게 glDatePicker를 채우기 위해 데이터를 가져 오는 지입니다. 3 회의 ajax 호출이 있습니다.이 호출은 기본적으로 비동기식입니다. 마지막 성공 함수에서 showCalender 함수를 실행하지만 선행 호출이 완료되었음을 나타내는 확실성이 없습니다. (즉,이 모든 요청이 비동기 를 전송 부울을 기본적으로 (기본값 : true)를

비동기 : 입력 당신은 당신의 아약스를 할 수

falseasync 매개 변수를 설정하여 동기를 호출은 jQuery를 docs 참조 기본적으로 true로 설정됩니다). 동기화 요청이 인 경우이 옵션을 false로 설정하십시오. 교차 도메인 요청 및 dataType : "jsonp"요청은 동기 작업을 지원하지 않습니다. 동기 요청은 일시적으로 브라우저를 잠글 수 있으며, 요청이 활성화되어있는 동안 모든 작업을 비활성화 할 수 있습니다. jQuery 1.8부터 async : false를 jqXHR ($ .Deferred)과 함께 사용하는 것이 더 이상 사용되지 않습니다. 은 대신 jqXHR.done() 또는 (사용되지 않는 jqXHR.success())과 같은 jqXHR 객체의 해당 메서드 대신 성공/오류/완료 콜백 옵션을 사용해야합니다.

또는 모든 성공 콜백에서 그들을 체인 수 있지만, 코드가 mantain하기 어려울 것 또는 관리자가 여러 아약스에이 플러그인 http://docs.jquery.com/AjaxQueue

그것은 로컬 데이터와 함께 잘 작동 호출을 사용할 수 있습니다, 참조 : http://jsfiddle.net/IrvinDominin/V59E7/

specialDates: [{ 
     date: new Date(0, 8, 5), 
     data: { 
      message: 'Happy Birthday!' 
     }, 
     repeatYear: true, 
     cssClass: 'special-bday' 
    }, { 
     date: new Date(2013, 0, 8), 
     data: { 
      message: 'Meeting every day 8 of the month' 
     }, 
     repeatMonth: true 
    }] 
+0

안녕하세요 에드워드는 멋진 답장을 보내 주셔서 감사합니다. 확인해야합니다. 작동하면 답변을 표시합니다. 다시 감사합니다. –

+0

specialDates에 관해서는 모든 것을 통해 루프를 돌릴 필요가 있습니다. 정적이 아닙니다. 당신의 바이올린 코드를 보았습니다.내 코드에서 로컬 데이터가 괜찮아요. 내가 아약스에서 가져 오는 모든 데이터 서식 지정에 문제가 있습니까 ??? –

+0

문제가 없다면, specialDates가 필요로하는 형식의 배열 ob 객체를 호출하거나 아약스 호출에서 반환해야합니다. http://jsfiddle.net/V59E7/1/ –

관련 문제