2012-02-01 16 views
7

別の選択肢の値に基づいて選択する動的なドロップダウンメニューを作成したいとします。私は何度も試みて失敗しました。私は以下のコードを持っています。問題が何であるかを誰でも知ることができます。jQuery、PHP、MySQLでJSONデータを読み込む方法

//テンプレート:

<script type="text/javascript"> 

$(function(){ 
    getSelectVal(); 
    $("#grouptypes").change(function(){ 
     getSelectVal(); 

    }); 
}); 

function getSelectVal(){ 
    $.getJSON('<?php echo url_for('group_utilization/GroupModification') ?>', {'grouptypes':$("#grouptypes").val()},function(data){ 
     var groups = $("#groups"); 
     $("option",groups).remove(); 
     $.each(json,function(index,array){ 
      var option = "<option value='"+array['id']+"'>"+array['title']+"</option>"; 
      select.append(option); 
     }); 
    }); 
} 

</script> 

GroupType: <select id="grouptypes"> 

    <?php foreach($grouptypes as $type) : ?> 

    <?php echo "<option value='" . $type->name . "'>" .$type->name. "</option>"; ?> 

    <?php endforeach ?> 

</select><br /> 
<br />Result:<span id="list-of-groups"></span> 

<br /> 
Group: <select name="group" id="groups"> 

</select><br /> 

データベースを返すためのもう一つのファイルには、値を返さ:

if(isset($_GET["grouptypes"])){ 
$grouptypes = $_GET["grouptypes"]; 

$query = "SELECT g.name FROM groups g INNER JOIN group_types gt ON(gt.id = g.group_type_id AND gt.name = ?)"; 

$groups = $db->getResultsForQuery($query, $grouptypes); 
echo json_encode($groups); 
} 
+1

あなたが失敗したと言ったら、どういう意味ですか?投稿できるエラーメッセージがありますか? – Crashspeeder

+1

スクリプトエラーがありますか?初期化されていない変数json '$ .each(json、function(index、array){' –

+0

)を参照しているようです。 'json'変数と同様に、' select'変数はあなたが投稿したコードでは初期化されていません。 – Jasper

答えて

0

コードの先頭ブロックは、実際にあるべき:あなたが参照する必要が

$(document).ready(function(){ 
    getSelectVal(); 
    $("#grouptypes").change(function(){ 
     getSelectVal(); 

    }); 
}); 
+0

'$(document).ready(function() "$(function(){});'とまったく同じものです:http://api.jquery.com/ready/ – Jasper

0

タグを付ける前にjQuery var:

function getSelectVal(){ 
    var select = $("#grouptypes"); 

    $.getJSON('<?php echo url_for('group_utilization/GroupModification') ?>', {'grouptypes':$("#grouptypes").val()},function(data){ 
    var groups = $("#groups"); 
    $("option",groups).remove(); 
    $.each(data,function(index,array){ 
     var option = "<option value='"+array['id']+"'>"+array['title']+"</option>"; 
     select.append(option); 
    }); 
    }); 
} 
+0

こんにちは、Ronさん、あなたの答えをありがとう、しかし、それも動作しません.Jsonとisset($ _ GET ["grouptypes"])が渡す値を得ることができません、私は混乱しています –

+0

渡された "データ"引数"json"の代わりに$ .each(json ... - 私はこの変更を反映するために上記の答えに変更しました。うまくいけば、これは "isset"操作を解決します。 –

0

あなたがgetJSONを使用するために適切にリンクを出力できない可能性があるので、url_for()が機能します。私はあなたのコードに近いものをいじるたとえば(ところで、あなたは、シンフォニーを使用していますか?)

$.post("<? echo 'server.php';?>", function(data) { 
        aler(data); 

        }); 

      }); 

私は私のJSコードは明らかに私はリンクではありません

http://dev.wonderland/%3C?%20echo%20'server.php'?%3E 

でこのリンクを取得に到達しようとしている。また、PHPコードの最後にセミコロンを追加してもう一度やり直してください。

1

PHPスクリプトがJSON用の適切なヘッダーを送信しますか?

このjusteを "echo json_encode($ groups);"の前に挿入しようとします。 最終的には、余分な出力を避けるために終了呼び出しを行います。

$ groups = $ db-> getResultsForQuery($ query、$ grouptypes);
header( 'Content-type:application/json; charset = utf-8');
echo json_encode($ groups);
exit();