2013-11-20 19 views
0

我正在創建一個工作計劃程序並希望通過每週日曆進行分頁。我有一週的當前周和左雙箭頭的點擊,我收穫了顯示一週的週數,並與該腳本發送到控制器:PHP:從AJAX中的星期數開始的日期

(function() { 
    $(document).on('click', '#navrow_prev', function(e){ 
     var curr_week = $('#display_week').text(); 
     var prev_week = parseInt(curr_week) - 1; 
     $('#display_week').empty().text(prev_week); 

     $.ajax({ 
      url: "<?= site_url('ajax/get_monday_from_week'); ?>", 
      type: "POST", 
      data: { week: prev_week }, 
      success: function(msg){ 
       //$('#display_monday').empty().text(msg); 
       alert(msg); 
      } // end success 
     }); 
    }); 
})(); // end self-invoking anonymous function 

Ajax調用之前的部分工作正常。然而,我沒有得到警報(我正在尋找可以改變當週星期一和星期日的顯示日期的響應),並且FireBug告訴我在下面的控制器功能中有500個錯誤。這是我從多個Google搜索中找到的代碼,我不明白錯誤在哪裏。

public function get_monday_from_week(){ 
    $week = $this->input->post('week'); 
    $year = date('Y'); 
    if((int)$week < 10){ $week = '0'.(string)$week; } else { $week = (string)$week; } 

    echo date('Y-m-d', strtotime($year."W".$week); 
} // end get_monday_from_week function 
/*-----------------------------------------------------*/ 

更新:我現在在控制器中使用它,比我預期的要晚一週。我用我的編輯搞砸了代碼嗎?

public function get_monday_from_week(){ 
    $week = $this->input->post('week'); 
    $year = date('Y'); 

    $time = strtotime("1 January $year", time()); 
    $day = date('w', $time); 
    $time += ((7*$week)+1-$day)*24*3600; 

    echo date('Y-m-d', $time); 
} // end get_monday_from_week function 
/*-----------------------------------------------------*/ 

我目前發佈了一個「46」(根據FireBug)並沒有得到任何迴應。任何幫助表示讚賞。

+0

既然你得到500錯誤,很可能是你的JavaScript無關,與這個(假設你當然已經驗證數據正按預期在AJAX請求中發送)。您是否嘗試過在javascript環境之外對您的端點進行相同的確切請求? –

+0

我得到了通用錯誤500頁面。我正在嘗試用Shuvo的代碼重寫AJAX控制器函數。 – jgravois

+0

您是否第一次查看服務器錯誤日誌以查看可能導致500錯誤的原因? –

回答

0

嘗試這一個:

public function get_monday_from_week(){ 
    $week = $this->input->post('week'); 
    $year = date('Y'); 
    if((int)$week < 10){ $week = '0'.(string)$week; } else { $week = (string)$week; } 

    echo date('Y-m-d', strtotime($year."W".$week)); // end parenthesis was missing 
}// end get_monday_from_week function 

另一條是:

function get_monday_from_week() { 
    $week = 52; 
    $year = 2013; 
    $time = strtotime("1 January $year", time()); 
    $day = date('w', $time); 
    $time += ((7*$week)+1-$day)*24*3600; 
    $return[0] = date('Y-n-j', $time); 
    echo $return[0];//2013-12-30 

    if((int)$week < 10){ $week = '0'.(string)$week; } else { $week = (string)$week; } 
    echo date('Y-m-d', strtotime($year."W".$week)); //2013-12-23 

    } 
+0

我修改了這段代碼以適應我的應用程序,但是警報太晚了一週。當我從本週移動到上週(從第47周到第46周),併發布「46」(通過FireBug驗證)時,警報是2013-11-18,但應該是2013-11-11。我編輯了我的原始問題,以顯示我如何修改此代碼。 – jgravois

+0

請立即檢查 –

+0

感謝您的幫助! – jgravois

相關問題