用Ajax写的省市联动,修改时如何显示地址里已有的省和市

jinyu89 2014-11-27 04:39:33
用Ajax写的省市联动,添加地址的时候默认的省市都显示,- -请选择- - 但是修改的时候如何让省市下拉菜单里默认的选中,地址里的省市?[下拉菜单里的省,是直接从数据库拿出来保存在一个数组变量里,把变量付给下拉框]


js代码:
<script type="text/javascript">
//创建Ajax引擎对象
function getXmlHttpObject(){
var xmlHttpRequest;
if(window.ActiveXObject){
xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
}else{
xmlHttpRequest=new XMLHttpRequest();
}
return xmlHttpRequest;
}

var myXmlHttpRequest="";



function getCities(){

myXmlHttpRequest=getXmlHttpObject();

if(myXmlHttpRequest){

var url="../plus/showcity.php";//post

var data="province="+$("sheng").value;

myXmlHttpRequest.open("post",url,true);

myXmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

myXmlHttpRequest.onreadystatechange=chuli;

myXmlHttpRequest.send(data);


}
}

function chuli(){

if(myXmlHttpRequest.readyState==4){

if(myXmlHttpRequest.status==200){
//取出服务器回送的数据
//window.alert(myXmlHttpRequest.responseXML);
var cities=myXmlHttpRequest.responseXML.getElementsByTagName("city");
//alert(cities.length);
//遍历并取出城市
$("city").length=0;
var myOption=document.createElement("option");
myOption.innerHTML="--请选择--";
$("city").appendChild(myOption);

for(var i=0;i<cities.length;i++){
var city_name=cities[i].childNodes[0].nodeValue;
//alert(city_name);
var myOption=document.createElement("option");
myOption.value=city_name;
myOption.innerHTML=city_name;
$("city").appendChild(myOption);
}
}
}
}

function $(id){

return document.getElementById(id);
}
</script>

html代码:

<form class="box_form" action="address.php" method="post">
<fieldset>
<label>收件人:</label><input type="text" id="sjr" name="truename" onFocus="document.getElementById('sjr').className='mystyle'" onBlur="document.getElementById('sjr').className='mystyle2'" value="{dede:var.rows.truename/}"/>
</fieldset>
<fieldset>
<label>手机:</label><input type="text" id="sj" name="phone" onFocus="document.getElementById('sj').className='mystyle'" onBlur="document.getElementById('sj').className='mystyle2'" value="{dede:var.rows.phone/}"/>
</fieldset>
<fieldset>
<label>所在地:</label>
<select name="province" id="sheng" onchange="getCities()">
<option value="">--请选择--</option>
{dede:array.province}
<option value="{dede:value.id/}">{dede:value.name/}</option>
{/dede:array}
</select>
<select name="city" id="city">
<option value="">--请选择--</option>
</select>
</fieldset>
<fieldset>
<label>详细地址:</label><input type="text" id="xxdz" name="address" onFocus="document.getElementById('xxdz').className='mystyle'" onBlur="document.getElementById('xxdz').className='mystyle2'" value="{dede:var.rows.address/}"/>
</fieldset>
<fieldset>
<label>邮编:</label><input type="text" id="yb" name="zipcode" onFocus="document.getElementById('yb').className='mystyle'" onBlur="document.getElementById('yb').className='mystyle2'" value="{dede:var.rows.zip/}"/>
</fieldset>
<fieldset>
<label>设置为默认:</label><input type="radio" name="selected" value="1" checked="checked"/> 是  <input type="radio" name="sz"/> 否
</fieldset>

<p class="form_btn"><input type="submit" value="保存" id="restore" onclick="check();"/><input type="reset" value="取消" id="can" /></p>
</form>

php文件:

<?php
require_once (dirname(__FILE__) . "/../include/common.inc.php");
require_once(DEDEINC.'/dedesql.class.php');
//服务器端
//告诉浏览器返回的数据格式是xml格式
header("Content-Type: text/xml;charset=utf-8");
//告诉浏览器不要缓存数据
header("Cache-Control: no-cache");

//接收用户选择省的名字
$province=$_POST['province'];

$city = array();
$dsql->SetQuery("SELECT * FROM area WHERE reid=$province");
$dsql->Execute();
$i = 0 ;
while($row=$dsql->GetArray())
{
$city[] = $row;
$i++;
}
unset($row);
$info="<province>";
$len=count($city);
for($l=0;$l<$len;$l++){
//file_put_contents("e:/aa.txt",$city[$l][name],FILE_APPEND);
$info.="<city>".$city[$l][name]."</city>";
}
$info.="</province>";
file_put_contents("e:/aa.txt",$info,FILE_APPEND);
echo $info;
...全文
422 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Ajax实现数据库填充省市下拉框联动菜单示例 //Ajax和DropDownList设置 <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:DropDownList ID="dltbSheng" runat="server" AutoPostBack="True" onselectedindexchanged="dlSheng_SelectedIndexChanged"> </asp:DropDownList> <asp:DropDownList ID="ddlShi" runat="server"> </asp:DropDownList> </ContentTemplate> </asp:UpdatePanel> //调用数据库显示下拉框数据 SqlConnection sqlcon; string strCon = ConfigurationManager.AppSettings["conn"]; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { sqlcon = new SqlConnection(strCon); string sqlstr = "select tbSheng from tb_Sheng"; SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon); DataSet myds = new DataSet(); sqlcon.Open(); myda.Fill(myds); dltbSheng.DataSource= myds; dltbSheng.DataValueField = "tbSheng"; dltbSheng.DataBind(); string strtb_Shi = "select * from dl_Shi where tbSheng='" + dltbSheng.SelectedItem.Text + "'"; SqlDataAdapter mydaShi = new SqlDataAdapter(strtb_Shi, sqlcon); DataSet mydsShi = new DataSet(); mydaShi.Fill(mydsShi); ddlShi.DataSource = mydsShi; ddlShi.DataValueField = "tb_Shi"; ddlShi.DataBind(); sqlcon.Close(); } } protected void dlSheng_SelectedIndexChanged(object sender, EventArgs e) { sqlcon = new SqlConnection(strCon); string sqlstr = "select * from dl_Shi where tbSheng='" + dltbSheng.SelectedItem.Text+ "'"; SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon); DataSet myds = new DataSet(); sqlcon.Open(); myda.Fill(myds); ddlShi.DataSource = myds; ddlShi.DataValueField = "tb_Shi"; ddlShi.DataBind(); sqlcon.Close(); }
xuzuning 2014-11-28
  • 打赏
  • 举报
回复
那我就奇怪了,你不是 省市联动 吗? 选中省 当然是用户的事情啦
jinyu89 2014-11-28
  • 打赏
  • 举报
回复
怎么选中省呢??
xuzuning 2014-11-27
  • 打赏
  • 举报
回复
选中 省 ajax 取得 市 列表 并不需要再修改 省 列表了

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧