2014-01-12 26 views
0

業務邏輯我如何使用javascript

用戶可以設置,更新和刪除時,他們將可用於臨時工作PHP檢索數據。我爲jQuery UI設置了multiDatePicker。它允許用戶選擇多個日期。

其目前正在

用戶如何能夠選擇多個日期,其日期都通過AJAX發佈到壓延機控制器

的問題

我可以訪問的日期在我的回調函數中很好,但是當我嘗試檢索回調函數之外的以前選擇的日期時,它似乎不起作用。所以我想要完成的是以下內容。

  1. 用戶選擇幾個不同的日期然後關閉日曆。他們在稍後的時間點回來,並可以看到他們以前選擇的日期。

CalenderController

public function calendar(){ 
    $id = Auth::user()->id; 
    $user_ids = DB::table('availability')->lists('user_id'); 
    $comma_separated = implode(",", $_POST['dates']); 


     if (empty($user_ids)){ 

      DB::table('availability')->insert(array('user_id' => $id, 'dates_available' => $comma_separated)); 
      return Response::json(array("dates" => $comma_separated)); 

     }else{ 

      foreach ($user_ids as $user_id){ 

       //if user id exit then add new dates 
       if ($user_id == $id) { 


        DB::statement("update availability set dates_available = concat(dates_available, ',{$comma_separated}') where user_id = '{$id}'"); 
        return Response::json(array("dates" => $comma_separated)); 


       } 
      } 


     } 



} 

JS/AJAX

var today = new Date(); 
    var y = today.getFullYear(); 
    var arr=[]; 
    $('#dashboard-availability-calender').multiDatesPicker({ 
     addDates: "how do i retrieve the dates from db ?", 
     minDate: today, 
     numberOfMonths: [1,1], 
     showCurrentAtPos: today.getMonth(), 
     onSelect: function(date) { 

      var found = jQuery.inArray(date, arr); 
      if (found >= 0) { 
       // Element was found, remove it. 
       arr.splice(found, 1); 
      } else { 
       // Element was not found, add it. 
       arr.push(date); 
      } 
     } 
    }); 

    $(".mdp_button").click(function(event) { 
     event.preventDefault(); 

     console.log('user clicked'); 
     for (var i = 0; i < arr.length; i = i + 1) { 
      console.log("dates selectd " + arr[ i ]); 
     } 

     if (arr.length === 0) { 
      alert("No dates selected."); 
     } else { 

      var dates = jQuery("form#mdp_form").serialize() + "&" + $.param({ dates: arr }, false); 

      $.ajax({ 
       url: '/user/dashboard', 
       data: dates, 
       type: 'POST', 
       beforeSend: function() { 
        jQuery('.ui-datepicker-calendar').addClass('calenderDisabled'); 
        $('.mdp_button').button('loading'); 
       }, 
       success: function(data) { 
        //I can retrieve my data like this data.dates 
        setTimeout(function() { 
        jQuery('.sending').hide().remove(); 
         jQuery('.mdp_button').addClass('btn-success').button('complete'); 
         jQuery('.mdp_button').removeClass('btn-success').button('reset'); 
         jQuery('.ui-datepicker-calendar').removeClass('calenderDisabled'); 
         jQuery('#response').html('<div class="alert alert-success fade in"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>Your dates have been saved successfully</div>'); 
        }, 500) 

       } 

      }); 
     } 
    }); 
+0

你確定這是一個Laravel問題,而不是一個純粹的JS/ JQuery的問題? – chris342423

+0

@ chris342423你是對的我改變我的問題 – elodev

+0

好吧。也許你仍然應該添加一個你使用Laravel的提示:P – chris342423

回答

1

試試這個:

$.ajax({ 
url: '/user/dashboard', 
data: dates, 
type: 'POST', 
async: false,  <-----------------------------ADD THIS 
beforeSend: function() { 
    jQuery('.ui-datepicker-calendar').addClass('calenderDisabled'); 
    $('.mdp_button').button('loading'); 
}