0

しばらく ajax スクリプトを実行できませんでした。

基本的に、ユーザーは 1 つのドロップダウン ボックスからオプションを選択し、選択した内容に基づいて、MySQL クエリに基づいて 2 番目のドロップダウン ボックスに入力する必要があります。

私のスクリプトは次のようになります

<script type="text/javascript">
    $(function(){
    $('select [name="front-size"]').change(function()
    {
        $.ajax({
            url: '../functions/process.php',
            type:'get',
            data:{'value' : $(this).val()}, 
            dataType:"html",
            success: function(data) {
                $("#sub").html(data);
            }
        });
    });
    });
</script>

私の最初のドロップダウンボックスは、次のようなMySQLクエリによって入力されます

<select name="front-size" onchange="ajaxfunction(this.value)">
     <?php
    $door_size = $db->prepare("SELECT DISTINCT door_size FROM doors WHERE door_model = '".$_SESSION['front_door']."'");
    $door_size->execute();
    while($row = $door_size->fetch(PDO::FETCH_ASSOC))
    {
        $size = $row['door_size'];
        echo '<option value="'.$size.'">'.$size.'</option>';
    }
    ?>
</select>

2 番目のドロップダウン ボックスは空です

<select name="front-finish" id="sub" onchange="ajaxfunction(this.value)">
</select>

そして、process.php は、以前に選択されたものに基づいて次のクエリを実行する必要があります (これは単独で機能します)。

<?php
    session_start();
    include ('config.php');

    $parent = $_GET['parent'];

    $update_option = $db->prepare("SELECT door_finish FROM doors WHERE door_model = '".$_SESSION['front_door']."' AND door_size = '".$parent."'");
    $update_option->execute();
    while($row = $update_option->fetch(PDO::FETCH_ASSOC))
    {
        $door_finishes = $row['door_finish'];
        echo '<option value="'.$door_finishes.'">'.$door_finishes.'</option>';

    }
?>

Firebug で最初のドロップダウン メニューを選択すると、このエラーが表示され、解決できませんでした。

ReferenceError: ajaxfunction is not defined

ajaxfunction(this.value)

どうすればこれを修正できますか?

4

1 に答える 1

0

ajaxfunction を呼び出していますが、コードのどこにも定義していません。

<script type="text/javascript">
    $(function(){
    $('select [name="front-size"]').change(function()
    {
        $.ajax({
            url: '../functions/process.php',
            type:'get',
            data:{'value' : $(this).val()}, 
            dataType:"html",
            success: function(data) {
                $("#sub").html(data);
            }
        });
    });
    });
function ajaxFunction(stuff){
//do ajax stuff here will fix the error 
}
</script>

onchange=ajaxfunction(this.value)より広い意味で、準備が整った関数で同じことができるのに 、なぜ html ( ) でそのインラインを呼び出すのですか?

<script type="text/javascript">
(function(){
$('select[name="first"]').change(function(){
//do stuff
});
$('select[name="second"]').change(function(){
//do other stuff
});
})
</script>

のほうがいい

編集:動作例については、このjsfiddleを確認してくださいhttp://jsfiddle.net/WF8CV/

于 2013-03-18T23:17:13.127 に答える