0

米国のさまざまな州が表示されるドロップダウン メニューがあります。ユーザーが異なる州を選択すると、this.value が ajax 関数に送信され、その州内の異なる都市で満たされた別のドロップダウン メニューが表示されます。

良いニュースは、それが機能することです...ほとんどの場合。しかし、「ニューヨーク」などの 2 つの単語を含む州を選択すると、何も見つかりません。真ん中に白いスペースがあるので、私はそれを認識します。したがって、this.value は実際には「New York」ではなく「New」のみを渡します。以下は私のPHPコードとAJAX関数です。私がここで見逃したことを誰か教えてもらえますか?! どうもありがとう :-)

        //if result returns a value
if ($result != NULL){

    $row = mysql_fetch_assoc($result);
    $countryCode = $row['Code'];

    if ($countryCode != NULL){

        $sql = "SELECT DISTINCT District FROM City WHERE CountryCode = '$countryCode'";
        $result = mysql_query($sql);

        ?>
        <select name="state" onchange="getCity('<?=$country?>',this.value)">
        <option>Select State</option>

        <? while($row=mysql_fetch_array($result)) { ?>

        <option value="<?=$row['District']?>"><?=$row['District']?></option>

        <? } ?>

        </select>

    <?php

    }


}


function getCity(countryId, stateId) {      
    var strURL="findCity.php?country="+countryId+"&state="+stateId;
    var req = getXMLHTTP();

    if (req) {

        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                // only if "OK"
                if (req.status == 200) {                        
                    document.getElementById('citydiv').innerHTML=req.responseText;                      
                } else {
                    alert("There was a problem while using XMLHTTP:\n" + req.statusText);
                }
            }               
        }           
        req.open("GET", strURL, true);
        req.send(null);
    }
4

1 に答える 1

2

このように値を二重引用符で囲む必要があります

<option value="<?=$row['District']?>"><?=$row['District']?></option>

HTML はデフォルトで最初の単語を値として取り、次の単語を値を持たない次の属性の名前として取ります。引用符で囲むと、フレーズ全体が単一の値になります。

于 2013-01-27T13:44:02.333 に答える