var content=xhr.responseText; var countrys=content.split("-");
var c=document.getElementById("country"); var children=c.childNodes; while(c.hasChildNodes()){//把之前的节点全部删除 c.removeChild(children[0]); } //添加新的节点 for(var i=0;i<countrys.length-1;i++){ var option=document.createElement("option");
throws ServletException, IOException { request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
Map<String, List<String>> citys=new HashMap<String, List<String>>();
List<String> bList=new ArrayList<String>();
bList.add("东城");
bList.add("西城");
bList.add("崇文");
citys.put("bj", bList);
List<String> tList=new ArrayList<String>();
tList.add("和平");
tList.add("河东");
tList.add("河西");
citys.put("tj", tList);
//北京-东城-西城-崇文
//天津-和平-河东-河西
String city=request.getParameter("city");
List<String> list=citys.get(city);
//System.out.println(list);
String result="";
for(String s:list){
result+=s+"-";
}
response.setContentType("text/plain");
PrintWriter writer=response.getWriter();//为什么该页面跳转的下一跳为02.html,servlet的功能
writer.print(result);
}<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title> New Document </title>
</head>
<body>
<select id="city">
<option value="bj">北京</option>
<option value="tj">天津</option>
</select>
<select id="country"></select>
<script type="text/javascript">
var city=document.getElementById("city");
city.onchange=function(){
var value=this.value;
var xhr;
//if和else if都不运行
if(window.XMLHttpRequest){
xhr=new XMLHttpRequest();
}else if(window.ActiveXObject){
xhr=new ActiveXObject("Microsoft.XMLHttp");
} xhr.onreadystatechange=function(){//这一句的意思是等待发送的请求接收后再运行?
if(xhr.readyState==4){//这句话什么意思? readyState一共有五个状态 0 未连接 1 打开连接 2 发送请求 3 交互 4 完成交互,
if(xhr.status==200){//下面的不运行代表页面有错误
//xhr.status==200是要通过 服务器来浏览,并且服务器页面没有发生错误或者转向时才返回200状态的
var content=xhr.responseText;
var countrys=content.split("-");
var c=document.getElementById("country");
var children=c.childNodes;
while(c.hasChildNodes()){//把之前的节点全部删除
c.removeChild(children[0]);
}
//添加新的节点
for(var i=0;i<countrys.length-1;i++){
var option=document.createElement("option");
option.innerHTML=countrys[i];
c.appendChild(option);
}
}
}
}
xhr.open("GET","cityServlet?city=" + value,true);
xhr.send(null);
}
</script>
</body>
</html>
async: false,
url: "http://center.smesd.gov.cn/util?o=areaselect&supercode=1030",
success:function(data){
alert(data);
}
});看看这样行不
谢谢 你的我看过了 我用js原生语句也调试通了 现在问题是那个jQuery语句老是调试不同不知道你弄过没,如果有时间帮我调一下上面那个URL。谢谢。
xml格式的输出和字符串格式的在js的原生写法中是完全不一样的!
然后保证你服务端组装的是JSON格式数据。
1.我在JS原生语法中加了句
XmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
返回的结果是整个XML文档内容,这个需要进一步解析出需要的结果true。如下图:2.在jQuery中可以获取到想要的结果,代码:$.ajax({
url: "ws/RegService.asmx/CheckReg",
dataType: "json",
data: "{o:'1',name:'2'}",
type: "POST",//
contentType: "application/json; charset=utf-8",//
success: function(json) {
alert(json.d);
//$("#result").text(json.d);
},
error: function(x, e) {
alert(x.responseText);
},
complete: function(x) {
alert(x.responseText);
}
});如图:虽然现在可以得到这样的结果,不过对JS和jQuery采用ajax访问url的内部原理很是模糊,特别是设置头类型等信息。
10300031,上海市;10300011,北京市;10300012,天津市;10300013,河北省;10300014,山西省;10300015,内蒙古自治区;10300021,辽宁省;10300022,吉林省;10300023,黑龙江省;10300032,江苏省;10300033,浙江省;10300034,安徽省;10300035,福建省;10300036,江西省;10300037,山东省;10300041,河南省;10300042,湖北省;10300043,湖南省;10300044,广东省;10300045,广西壮族自治区;10300046,海南省;10300050,重庆市;10300051,四川省;10300052,贵州省;10300053,云南省;10300054,西藏自治区;10300061,陕西省;10300062,甘肃省;10300063,青海省;10300064,宁夏回族自治区;10300065,新疆维吾尔自治区;10300071,台湾省;10300081,香港特别行政区;10300082,澳门特别行政区服务器端只是返回这些字符串,这是浏览器读取出来的,知道该怎么用jQuery获取到吗
如果是输出xml格式的话
这个是需要的,同时js接收的时候也需要另外的代码处理
如果只是输出字符串或者json对象之类的
你的原生的js代码最好这样写
function GetHttpRequest() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else{
return null;
}
}
var oXmlHttp = GetHttpRequest();
以下的代码你该怎么提交获取就怎么提交获取就行了
JSONArray json = JSONArray.fromObject(Object);
out.println(json.toString());
页面在使用转换试下
var obj = eval("(" + data + ")");
obj.属性名
你的success怎么能这么写success: function(json) {
alert(json);
}