0

ドロップダウンリストがあります(phpファイルでフォームタグなし)

print "<select id="animal" onchange="getSelectedItem(this.value)">
<option value = "Dog"> Dog </option>
<option value = "Cat"> Cat </option>
</select>";

変数 $selAnimal

そしてJavaScript関数

function getSelectedItem(opt){
    //$selAnimal = opt <- how do i do this?
}

できるだけページをリロードしたくないので、これをフォームに入れて選択したときに送信することは避けています。$.post メソッドを機能させることができません。PHPはサーバー側でJavaScriptはクライアント側であるため、これを直接行うことはできません。また、選択した値を非表示のコンポーネント(スパンなど)の中に入れて、そこから値を取得することも考えました。しかし、コンポーネントから取得する方法がわかりません。AJAX や jquery の使用も見ましたが、十分な知識はありません。

この値を php 変数に保存する必要があります。これは、2 番目のドロップダウンのオプションの基礎として使用するためです。たとえば、[犬] を選択すると、ドロップダウン リストには犬種がオプションとして表示されます。

私はどこでも可能な解決策を探すのに何日も費やしました。助けていただければ幸いです。ありがとうございました!

4

3 に答える 3

0

PHP は JS が開始する前にすべての変数を宣言するため、変数を同じファイルで使用することはできません。ただし、変数が使用可能な新しいファイルにユーザーをリダイレクトするだけです。

次のようなものを使用します。

function getSelectedItem(opt){
    location.href = location.href + "?selAnimal=" + opt;
}

PHP では、selAnimal 変数を使用して、次のように異なるものを表示できるようになりました。

$selectedAnimal = $_GET["selAnimal"];
if($selectedAnimal == "dog"){
    // Whatever you want to do now
}

より良い方法は、フォームで POST を使用することですが、これも問題なく機能するはずです。

于 2012-08-27T05:54:46.977 に答える
0

ここに解決策があります

<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $('#animal').change(function(){
    $.post('loadbreeds.php', { animal:$('#animal').val() },
        function(data){
            $('#breedList').html(data);
        });
    });
});
</script>

<form method="post" >
    <div id="animalList">
        <select id="animal" name="animal">
            <option value="">--Select--</option>
            <?php if (!empty($animals)) { foreach ($animals as $value) { ?>
                <option value="<?php echo $value['animalKey']; ?>"><?php echo $value['animalName']; ?></option>
            <?php }} ?>
        </select>
    </div>
    <div id="breedList">
        <select id="breed" name="breed">
            <option value="">--Select--</option>
        </select>
    </div>
    <input type="submit" value="Submit" />
</form>

loadbreeds.php のコード

$animalKey = $_POST['animal'];
$breeds = selectByKey($animalKey); // code for selecting breeds

<select id="breed" name="breed">
    <option value="">--Select--</option>
    <?php if (!empty($breeds)) { foreach ($breeds as $value) { ?>
        <option value="<?php echo $value['breedKey']; ?>"><?php echo $value['breedName']; ?></option>
    <?php }} ?>
</select>
于 2012-08-27T06:32:18.177 に答える
0

2 番目のドロップダウンを再構築するには、次のことを試してください。

http://jsfiddle.net/kAY7M/59/

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>

print "<script type=\"text/javascript\">var AnimalTypeList = [\"Dog1,Dog2,Dog3,Dog4\",\"Cat1,Cat2,Cat3,Cat4\"];</script>";

<script type="text/javascript">

$("#animal").change(function () {
    var sel = $("#animal").prop("selectedIndex") - 1;
    var list = AnimalTypeList[sel].split(",");
    var Counter = list.length;
    $("#type").children().remove();
    for (var i = 0; i < Counter; i++) {
        $("#type").append("<option value = '" + list[i] + "'> " + list[i] + "</option>");
    }    
})

</script>

純粋な Javascript のみのバージョンも作成できますが、それはもう少しコードが長くなります。

于 2012-08-27T06:57:32.893 に答える