2016-07-05 10 views
0

Ich verwende Pickadate.js und JQuery Form Plugin. Ich habe Datum und Zeit Picker separat. Was ich tun möchte, ist Zeiten in Zeitpicker nach Wert von Datepicker zu deaktivieren. Also versuche ich, die JSON-Daten in picker.set("disable", [ ]); zu bekommen. Ich kann den Klartext trösten, aber er bleibt ziellos.Aktualisierung Pickadate Eingabe über Ajax

Ich habe viel versucht und bin auf these solutions gestoßen. Aber ich konnte sie nicht starten. (I angepasst pickadate Funktionen und Klassen zu pickatime des.)

// 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); 
 
?>

Antwort

1

Können Sie nach einem Beispiel für die json von Ihrem PHP zurückgegeben werden?

Nach den docs (http://amsul.ca/pickadate.js/api/#method-get-disable) Ihre json so etwas wie dies sein sollte: [2,30], [4,30], [9,0]

Wenn Ihr json korrekt ist, sollten Sie es wird nicht als String an den Timepicker übergeben. Versuchen Sie so etwas wie:

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

UPDATE: ich mit dem folgenden Code erraten, wird Ihr json zurückkehren richtig:

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

Danke. In meiner Methode gibt console.log (responseText) '[" [4,30] "," [9,0] "]' genau zurück. Und in Ihrem console.log (json) gibt '' ["4,30", "9,0"] 'zurück. Ich weiß, dass meine Codes einen String-Wert generieren und es wird nicht für mich arbeiten. Ich bin auf der Suche nach dem richtigen Weg, Json zu übergeben. – Melih

+0

Ich sehe ... lassen Sie uns eine neue Lösung versuchen, überprüfen Sie mein Update. –

+0

Gute Arbeit! Braucht nur ein paar Korrekturen ... 'var json = JSON.parse (responseText); picker.set ("enable", true); picker.set ("disable", json); ' – Melih

Verwandte Themen