2016-07-05 12 views
0

私はPickadate.jsJQuery Form Pluginを使用します。私は日付と時刻のピッカーを別々に持っています。私がしたいのは、datepickerの値に応じてtimepickerで時間を無効にすることです。だから、私はpicker.set("disable", [ ]);にJSONデータを取得しようとしています。私はconsole.logにプレーンテキストを書くことができますが、それは無意味なままです。Ajax経由でのPickadate入力の更新

私は多くを試して、these solutionsに出くわしました。しかし、私はそれらを起動できませんでした。 (私はのをpickatimeするpickadate関数やクラスを適応。)

// Javascript 
 
$(document).ready(function() { 
 
    $("input").click(function() { 
 
    $(".datepicker").pickadate({ 
 
     format: 'yyyy-mm-dd', 
 
     formatSubmit: 'yyyy-mm-dd', 
 
     min: true, 
 
     max: false 
 
    }); 
 
    var $input = $(".timepicker").pickatime({ 
 
     format: 'HH:i', 
 
     formatSubmit: 'HH:i', 
 
     formatLabel: 'HH:i' 
 
    }); 
 
    $('.datepicker').change(function() { 
 
     $('#form').ajaxSubmit({ 
 
     target: '#check_result', 
 
     url: 'check.php', 
 
     success: function showResponse(responseText, $form) { 
 
      var picker = $input.pickatime('picker'); 
 
      picker.set("disable", [ 
 
      console.log(responseText) 
 
      ]); 
 
     } 
 
     }); 
 
     return false; 
 
    }); 
 
    }); 
 
});
// PHP (check.php) 
 
<?php 
 
require ('connect.php'); 
 
$date = mysql_real_escape_string($_POST['date']); 
 
$match_query = mysql_query("SELECT * FROM booking where DATE(time)='$date'"); 
 
$disabled_times = array(); 
 
if ($result = $match_query) { 
 
\t /* fetch associative array */ 
 
\t while ($row = mysql_fetch_assoc($result)) { 
 
\t \t setlocale(LC_ALL,"tr_TR.UTF-8"); 
 
\t \t $row['time'] = date('H:i', strtotime($row['time'])); 
 
\t \t $row['time'] = str_replace(':', ',', $row['time']); 
 
\t \t $disabled_times[] = '['.$row['time'].']'; 
 
\t } 
 
\t /* free result set */ 
 
\t mysql_free_result($result); 
 
} 
 
echo implode($disabled_times); 
 
?>

答えて

1

あなたは、PHPから返されるJSONの例を投稿することができますか?あなたのJSONが正しければ、それを確認してください、[2,30]、[4,30]、[9,0]

ドキュメント(http://amsul.ca/pickadate.js/api/#method-get-disable)によると あなたのJSONはこのようなものでなければなりませんタイムピッカーに文字列として渡されていません。

var json = JSON.parse(responseText); 
picker.set("disable", [ json ]); 

UPDATE:ような何か試してみてください、私は次のコードで推測 を、あなたのJSONが適切に返されます:

... 
$time = explode(',', $row['time']); 
$time[0] = (int)$time[0]; 
$time[1] = (int)$time[1]; 
$disabled_times[] = $time; 
... 
echo json_encode($disabled_times); 
+0

ありがとうございました。 私の方法では、console.log(responseText)は '[" [4,30] "、" [9,0] "]'を返します。そしてあなたのconsole.log(json)は '[" 4,30 "、" 9,0 "]'を返します。 私のコードが文字列値を生成することはわかっています。私はjsonを渡す正しい方法を探しています。 – Melih

+0

私は新しいソリューションを試してみましょう。私のアップデートをチェックしてみましょう。 –

+0

素晴らしい仕事!いくつかの修正が必要です... 'var json = JSON.parse(responseText); picker.set( "enable"、true); picker.set( "disable"、json); ' – Melih

関連する問題