0

我有一个包含不同美国州的下拉菜单。当用户选择不同的州时,它会将 this.value 发送到一个 ajax 函数,该函数填充另一个下拉菜单,其中填充了该州内不同的城市。

好消息是它可以工作......在大多数情况下。但是,当我选择一个带有 2 个单词(例如“纽约”)的州时,它什么也找不到。我推测它是因为中间有一个空白区域。因此 this.value 实际上只传递了“New”而不是“New York”。下面是我的 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 回答