首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PHP中的ajax预填充适当国家的状态详细信息

使用PHP中的ajax预填充适当国家的状态详细信息
EN

Stack Overflow用户
提问于 2014-09-03 11:08:22
回答 1查看 276关注 0票数 0

在选择任何国家后,我需要在frmState下拉框中预先填充状态详细信息。但我对ajax并不熟悉,对此我也没有足够的了解。你能帮我做这件事吗?如下所示。它可能值很多钱。提前谢谢。

我在mySql有两张桌子。

tbl_country

代码语言:javascript
运行
复制
columns: country_id(auto inc id) | country_name | country_code

tbl_states

代码语言:javascript
运行
复制
columns: state_id(auto inc id) | state_name | country_name

Html代码

代码语言:javascript
运行
复制
<select class="txtselectcomp" name="frmCountry" id="frmCountry" onChange="showHint(this.value);" onblur="checkEmptyData('frmCountry');" required="required" >
<option value="">Select  country</option>
    <?php
for ($i = 0; $i < count($strCountries); $i++) { ?>
         <option value="<?php
    echo $strCountries[$i]['country_name']; ?>" <?php
    if ($_POST['frmCountryName'] == $strCountries[$i]['country_name']) { ?> selected="selected" <?php
    } ?>><?php
    echo ucfirst($strCountries[$i]['country_name']); ?></option>
    <?php
} ?>
</select> 

<select class="txtselectcomp" name="frmState" id="frmState" onblur="checkEmptyData('frmState');" required="required" >
<option value="">Select State</option>
</select>   

Ajax脚本

代码语言:javascript
运行
复制
<script language="javascript">
function showHint(str)
{
    var xmlhttp;
    if (str.length==0) {
        document.getElementById("frmState").innerHTML="";
        return;
    }
    if (window.XMLHttpRequest) {
        xmlhttp=new XMLHttpRequest();
    }
    else {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status==200) {
            document.getElementById("frmState").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET","findState.php?value="+str,true);
    xmlhttp.send(null);
}
</script>

函数

代码语言:javascript
运行
复制
$strCountries = doSelectRecordsById('tbl_country', 'country_id, country_name', 'country_id', ' order by country_name ASC', '');

function doSelectRecordsById($strTableName, $strSelect='*', $strTableId, $strOrderBy = NULL, $strFieldValue = NULL)
    {
        if ($strFieldValue != NULL) {
            $strWhereClause = " WHERE $strTableId = '".(int)$strFieldValue."'";
        }

        $strSqlRecords = "SELECT $strSelect FROM $strTableName $strOrderBy $strWhereClause";
        $strSqlData = SelectQry($strSqlRecords);

        if ($strWhereClause == '') {
            return $strSqlData;
        } else {
            return $strSqlData[0];
        }
    }

function doSelectState($strIdent)
    {
        $strSelectsSql = "Select * from tbl_states Where country_name='".$strIdent."' ";
        $strSelectsResult = SelectQry($strSelectsSql);
        return $strSelectsResult[0];
    }

findState.php

代码语言:javascript
运行
复制
  <?php
    include ("config.php");
    $country_name = $_GET["value"];
    $sql = doSelectState($country_name);
    ?>
        <select name="State" id="State">
        <?php
    for ($i = 0; $i < count($sql); $i++) {
        $id = $sql[$i]['state_id'];
        $state = $sql[$i]['state_name'];
        echo '<option value="' . $id . '">' . $state . '</option>';
    }
   ?>
   </select>
EN

回答 1

Stack Overflow用户

发布于 2014-09-03 12:17:32

代码语言:javascript
运行
复制
<?php
include ("config.php");
$country_name = $_GET["value"];
$sql = doSelectState($country_name);
?>
    <select name="State" id="State">
    <?php
for ($i = 0; $i < count($sql); $i++) {
    $id = $sql[$i]['state_id'];
    $state = $sql[$i]['state_name'];
    echo '<option value="' . $id . '">' . $state . '</option>';
}

?>

在这里,您不必创建select元素。你可以这样做

代码语言:javascript
运行
复制
<?php
include ("config.php");
$country_name = $_GET["value"];
$sql = doSelectState($country_name);
for ($i = 0; $i < count($sql); $i++) {
    $id = $sql[$i]['state_id'];
    $state = $sql[$i]['state_name'];
    echo '<option value="' . $id . '">' . $state . '</option>';
}

?>

因此,当将数据返回到浏览器时,您将得到选项字段,而不是select的select,select的内部html可以是select。您现在要做的是将SELECT元素插入select元素中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25642784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档