0

選択ボックス オプションを動的に生成するコードを記述しようとしています。この onchange イベントから 2 つの値を送信する必要があります。1 は sub_header_id で、その他は header_id です。$row["header_id"] を JavaScript 関数に送信する必要があります。以下は私のPHPコードです。それ、どうやったら出来るの?連結された文字列を送信してから、JavaScript 関数で分割したくありません。

<?php
    include('config.php');
    $sql = sprintf("SELECT * FROM retail_sub_headers");
    $result = mysql_query($sql);
    $num = mysql_num_rows($result);
    if ($num > 0)
    {
        echo "<form>";
        echo "<select id = \"my_select_box\" onChange = \"javascript:load_brand_option_box(this, 'populate_brands', '');\">";
        echo "<option selected value = \"-------\">-------</option>";
        while($row = mysql_fetch_array($result))
        {
            echo "<option value = ".$row["sub_header_id"].">".$row["sub_header_name"]."</option>";
        }
        echo "</select>";   
        echo "</form>";
    }
?>

そして、これが私の JavaScript 関数 javascript:load_brand_option_box です。

function load_brand_option_box (sub_header_id, action, brand_id)
{
    var sub_header_value = sub_header_id.options[sub_header_id.selectedIndex].value
     if (action == "populate_brands")
     {
        if (window.XMLHttpRequest)
        {  // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }   
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                document.getElementById("brand_names").innerHTML=xmlhttp.responseText;
                //document.getElementById("livesearch").style.border="1px solid #A5ACB2";
            }
        }   
        xmlhttp.open("GET","populate.php?action="+action+"&sub_header_id="+sub_header_value+"&brand_id="+"",true);
        xmlhttp.send();
    }
}
4

1 に答える 1

1

これを試してください....newvalオプションに属性を追加しました。header idgrab header idfunction

<?php
        include('config.php');
        $sql = sprintf("SELECT * FROM retail_sub_headers");
        $result = mysql_query($sql);
        $num = mysql_num_rows($result);
        if ($num > 0)
        {
            echo "<form>";
            echo "<select id = \"my_select_box\" onChange = \"load_brand_option_box(this, 'populate_brands', '');\">";
            echo "<option selected value = \"-------\">-------</option>";
            while($row = mysql_fetch_array($result))
            {
                echo "<option value = ".$row["sub_header_id"]."  newval=".$row["header_id"].">".$row["sub_header_name"]."</option>";
            }
            echo "</select>";   
            echo "</form>";
        }
    ?>

    function load_brand_option_box (sub_header_id, action, brand_id)
    {
        var sub_header_value = sub_header_id.options[sub_header_id.selectedIndex].value
        var sel = document.getElementById('my_select_box');
        var header_id=sel.options[sel.selectedIndex].getAttribute('newval');
        //you will get the header id here 
         if (action == "populate_brands")
         {
            if (window.XMLHttpRequest)
            {  // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }   
            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    document.getElementById("brand_names").innerHTML=xmlhttp.responseText;
                    //document.getElementById("livesearch").style.border="1px solid #A5ACB2";
                }
            }   
            xmlhttp.open("GET","populate.php?action="+action+"&sub_header_id="+sub_header_value+"&brand_id="+"",true);
            xmlhttp.send();
        }
    }
于 2013-05-26T12:14:29.290 に答える