0

現在、場所 (ニューヨーク、ロサンゼルス、ラスベガスなど) で満たされた選択ボックスがあります。これらの場所のいずれかを選択すると、別の選択ボックスに日付が入力されます。私のjSON結果(Firefox Firebugによる)は次のとおりです。

[[{"id":"1345","van":"17-09-2013"},
{"id":"1346","van":"01-10-2013"},
{"id":"1347","van":"15-10-2013"}],
[{"id":"1348","van":"05-11-2013"},
{"id":"1349","van":"19-11-2013"},
{"id":"1350","van":"03-12-2013"}]] 

これが JSON の正しい形式だと思います。

IE を使用して New York または Las Vegas を選択すると正しく動作しますが、Los Angeles を選択すると「id」が見つからないというエラーが表示されます。Firefox では動作します。

これは、jSON ファイルを呼び出す方法です。

$tpl = "<script>$('#locatie_id').change(function(){
     $('#datum_id').empty();
     $.getJSON('getLocationDates.php', {locatie_id:$('#locatie_id').val()}, function(data) {
         var dateId = '". $datum ."';
         $.each(data, function(index, array) {      
             var option = '';
             option = '<option value=\"' + array[0]['id'] +'\"';
             if(dateId == array[0]['id']){
                      option += ' selected';
             }
             option += '>'+ array[0]['van'] +' - '+ array[1]['van'] +' - '+ array[2]['van'] +'</option>';       
             $('#datum_id').append(option);
         })
     });    
 });</script>";

これは私の getLocationDates.php です:

<?php


$pdo = new PDO($dsn, $username, $password);

$rows = array();
if(isset($_GET['locatie_id'])) {
    $query = "
    SELECT locaties_datum.id, locaties_datum.cursus_id, locaties_datum.locatie_id, locaties_datum.van, locaties_datum.code, locaties.plaats, locaties.link 
    FROM locaties, locaties_datum WHERE 1 = 1 

        AND locaties_datum.locatie_id = locaties.locatie_id 
        AND locaties_datum.van > '". strtotime("now") ."' 
        AND locaties.active = '1' 
        AND locaties_datum.cursus_id = '9' 
        AND locaties.locatie_id = ? 

    GROUP BY locaties_datum.code ORDER BY locaties_datum.van ASC ";

    $stmt = $pdo->prepare($query);
    $stmt->execute(array($_GET['locatie_id']));
    $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);


    $index = 0;
    $list = array();
    foreach($rows as $dk => $dv){
        //if($dv['van'] > strtotime("now")){
            $query2 = "
                SELECT locaties_datum.id as id, locaties_datum.van, locaties_datum.code, locaties_datum.cursus_id 
                FROM locaties_datum WHERE 1=1 
                    AND locaties_datum.code = '". $dv['code'] ."'
                GROUP BY locaties_datum.van 
                ORDER BY locaties_datum.van ASC ";
            $stmt = $pdo->prepare($query2);
            $stmt->execute(array($_GET['locatie_id']));
            $dList = $stmt->fetchAll(PDO::FETCH_ASSOC);

            if(is_array($dList)){
                $iSub = 0;
                foreach($dList as $cdmValue){
                    //if($dv['van'] != $cdmValue['van']){
                        $list[$index][$iSub]['id'] = $cdmValue['id'];
                        $list[$index][$iSub]['van'] = $cdmValue['van'];
                        $iSub++;
                    //}
                }
            }
            $index++;
        //}
    }


    for($i = 0; $i < count($list); $i++){
        $list[$i][0]['van'] = date('d-m-Y', $list[$i][0]['van']);
        $list[$i][1]['van'] = date('d-m-Y', $list[$i][1]['van']);
        $list[$i][2]['van'] = date('d-m-Y', $list[$i][2]['van']);
    }
}

echo json_encode(array_values($list));
?> 

IE で正しく動作しない理由を誰か教えてもらえますか?

4

0 に答える 0