ajax解决的下拉框的onchange问题
即在触发地区下拉框的onchange事件时,代理商的下拉框选项也相应的改变,比如选择地区 湖南—〉长沙,那么代理商下拉框只显示长沙的代理商。
本来认为这个很好实现,但实际改起来的时候发现问题多多,主要问题是原有的地区联动是用js实现的,它的数据源是一个xml文件,当然如果下拉框是服务器端控件那么问题是很好解决的,现在是html控件一下子似乎还真有些不好改,想了几种办法实现起来都不理想,最后将思路转向用ajax来实现问题才迎刃而解,现在仔细一想,像这种情况似乎只有用ajax才能比较好的.解决,如果是在地区下拉框的onchange事件里向后台进行一次提交,将地区下拉框的id传过去的话,实际上产生的回发会将地区联动下拉框重新初始化。
现在我具体谈谈这个ajax实现的过程。
首先页面当然需要定义一个下拉框的html控件。
复制代码 代码如下:
接下来当然是定义XmlHttpRequest对象。
复制代码 代码如下:
var xmlhttp;
function CreateXmlHttp()
{
//非IE浏览器创建XmlHttpRequest对象
if(ttpRequest)
{
xmlhttp=new XmlHttpRequest();
}
//IE浏览器创建XmlHttpRequest对象
if(veXObject)
{
try
{
xmlhttp=new ActiveXObject("TTP");
}
catch(e)
{
try{
xmlhttp=new ActiveXObject("TTP");
}
catch(ex){}
}
}
}
这个在我的多篇blog文章里都有阐述,就不多说了。
接下来当然是利用该对象来发送条件,获得数据,并且将获得的数据绑定到agent这个下拉框。
在地区下拉框的onchange事件里面触发函数AjaxSend();
复制代码 代码如下:
function AjaxSend()
{
//创建XmlHttpRequest对象
CreateXmlHttp();
if(!xmlhttp)
{
alert("创建xmlhttpRequest发生异常!");
return false;
}
//获取地区下拉框的value值,作为条件发送
var ss=lementById("a2")tring(0,4);
}
//要发送的url,UserAjax我专门用来取数据
url="
("POST",url,false);
adystatechange=function()
{
if(yState==4)
{
if(us==200)
{
//清空原下拉框
lementById("agent")th=0;
//str为返回的一个字符串,形式为"0001/代理商1,0002/代理商2,0003/代理商3"
var str=onseText;
//将该字符串分割为数组形式
var strs=t(",");
lementById("agent")(new Option("----------","000000"));
for(var i=0;i<th-1;i++)
{
//获取value值(编号)
var a=strs[i]tring(0,strs[i]IndexOf("/"));
//获取绑定内容
var b=strs[i]tring(strs[i]IndexOf("/")+1,th);
//绑定到下拉框
lementById("agent")(new Option(b,a));
}
}
}
}
();
}
另外顺便介绍一下UserAjax接收到该地区编号后获取数据返回字符串的过程。
复制代码 代码如下:
string Area = yString["area"]ring();
DataTable data = "生成DataTable,涉及到公司核心代码,省略"
string aa = "";
for (int i = 0; i < t; i++)
{
if (aa == "")
{
aa = [i]["id"]ring()+"/"+[i]["name"]ring();
}
else
{
aa = aa + "," + [i]["id"]ring() +"/"+ [i]["name"]ring();
}
}
e(aa);
这样,一个比较棘手的问题用ajax就获得了完美解决,并且不会因向后台回发而导致下拉框初始化,导致选项改变,亲爱的朋友,看了这个例子,你对ajax是不是也有了
更好的认识呢?
-
javascript包装对象的用法
js对象是一种复合值:它是属性或已命名值得集合。参考以下代码:vars="helloworld";varlen=th;在该例子中,s是字符串,而字符串不是对象,但为何会有属性呢?其实只要引用了字符串s的属性,js就会将字符串通过调用newString(s)的方式转换为对象,该对象继承了字符串的方法,并被...
-
php项目经理的职责表述7篇
php项目经理的职责表述11、负责售前技术支持。配合销售人员作售前产品技术讲解、演示;2、根据客户需求反馈研发,提供良好解决方案3、远程现场技术支持4、网络环境搭建和服务器配置;5、车载产品安装调试;6、软件平台安装调试;7、负责区域售后技术支持;8、参与项...
-
WAP教程:WML 链接和图像
链接可以制作WML卡片来显示WML的锚功能,图像可以制作WML卡片来显示图像.链接可以制作WML卡片来显示WML的锚功能。标签总是要规定一个任务("go","prev",或"refresh")。任务定义了当用户选择此链接时要做的事情。在本例中,当用户选择"Nextpage",其任务是"前往":Next...
-
如何理解Javascript的caller,callee,call,apply区别
在提到上述的概念之前,首先想说说javascript中函数的隐含参数:argumentsarguments该对象代表正在执行的函数和调用它的函数的参数。[function.]arguments[n]参数function:选项。当前正在执行的Function对象的名字。n:选项。要传递给Function对象的从0开始的参数值...
相关文章
- Don’t Take the Age As an Excuse为题目的作文
- 关于ASP.NET中TextBox使用Ajax控件显示日期不全的问题解决方法
- 大学英语作文On Changing Major Halfway
- Win10系统提示Officebackgroundtaskhandler.exe弹窗问题的解决方
- java如何利用java.net.URLConnection发送HTTP请求
- Great Changes in My Hometown为题目的作文
- java使用ConcurrentHashMap和计数器实现锁的方法
- A Lifeguard at Johns Beach Saved a Drowning Child,A Lifeguar英语作文
- On the Advantages of E-learning英语作文
- Advantages of Being a Teacher英语作文