兼容获取:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function
createXMLHttpRequest(){
try
{
// 如果是你是IE高版本 火狐 谷歌
return
new
XMLHttpRequest();
}
catch
(e) {
try
{
// 如果是IE6的版本
return
new
ActiveXObject(
"Msxml2.XMLHTTP"
);
}
catch
(e) {
try
{
// 如果是IE5.5版本
return
new
ActiveXObject(
"Microsoft.XMLHTTP"
);
}
catch
(e) {
alert(
"大哥!您这是什么浏览器呀!!"
);
}
}
}
}
|
* 代码如下
1
2
3
4
5
6
7
8
9
10
|
xhr.onreadystatechange =
function
(){
// 做出判断,如果xhr的对象状态已经为4了,说明响应已经结束了
// 不仅会判断状态是否为4,还会判断状态码是否为200
if
(xhr.readyState == 4 && xhr.status == 200){
// 在该位置,获取到响应的内容了。
// 接收响应的代码
var
result = xhr.responseText;
}
};
|
* put(key,value)* 静态方法:fromObject(JavaBean)传入进去,返回的JSONObject类
* add(JavaBean) -- 返回的类似数组的json格式。* toString() -- 把JSONArray转发字符串json数据格式
注意:如果传入的对象有引用其他对象,可能会引起死循环
解决办法:传入参数的时候,传入一个JsonConfig对象进去,这个对象扩滤掉相关的对象
12345678910//=======================解决内置死循环=============================
JsonConfig jsonConfig =
new
JsonConfig();
//设置不去查询的对象
jsonConfig.setExcludes(
new
String [] {
"crmDepartment"
,
"crmStaffs"
});
//===================================================================
String jsonString = JSONArray.fromObject(AllpostByDepId,jsonConfig).toString();
//解决中文乱码问题
ServletActionContext.getResponse().setContentType(
"text/html;charset=UTF-8"
);
ServletActionContext.getResponse().getWriter().write(jsonString);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
//1.获取连接对象(固定)
function
createXMLHttpRequest(){
try
{
// 如果是你是IE高版本 火狐 谷歌
return
new
XMLHttpRequest();
}
catch
(e) {
try
{
// 如果是IE6的版本
return
new
ActiveXObject(
"Msxml2.XMLHTTP"
);
}
catch
(e) {
try
{
// 如果是IE5.5版本
return
new
ActiveXObject(
"Microsoft.XMLHTTP"
);
}
catch
(e) {
alert(
"大哥!您这是什么浏览器呀!!"
);
}
}
}
}
function
changePost(aa){
var
depid = aa.value;
//获取对象
var
res =createXMLHttpRequest();
//连接服务器访问资源
res.open(
"post"
,
"${pageContext.request.contextPath}/CrmPostAction_findAllpostByDepId.action"
,
true
);
// 设置请求头
res.setRequestHeader(
"Content-Type"
,
"application/x-www-form-urlencoded"
);
//发送连接参数
res.send(
"crmDepartment.depId="
+depid);
//接受服务器返回的状态码
res.onreadystatechange =
function
(){
// 做出判断,如果xhr的对象状态已经为4了,说明响应已经结束了
// 不仅会判断状态是否为4,还会判断状态码是否为200
if
(res.readyState == 4 && res.status == 200){
var
postSelect = document.getElementById(
"postSelectId"
);
// 在该位置,获取到响应的内容了。
// 接收响应的代码
var
result = res.responseText;
//手动处理json数据
var
jsonData = eval(
"("
+result+
")"
);
// javascript 遍历json并添加数据
for
(
var
i = 0 ; i < jsonData.length ; i ++){
var
postObj = jsonData[i];
postSelect.innerHTML +=
"<option value='"
+postObj.postId+
"'>"
+postObj.postName+
"</option>"
;
}
}
};
}
|
Web层代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
function
searchName() {
var
c = document.getElementById(
"content"
);
c.innerHTML =
""
;
var
xhr = createXMLHttpRequest();
var
productName = document.getElementById(
"name"
).value;
// 判断,如果
if
(productName ==
null
|| productName ==
""
){
return
;
}
xhr.open(
"GET"
,
"${ pageContext.request.contextPath }/searchName?productName="
+productName);
xhr.send(
null
);
xhr.onreadystatechange =
function
(){
if
(xhr.readyState == 4 && xhr.status == 200){
// 接收值
var
name = xhr.responseText;
var
names = name.split(
","
);
for
(
var
i=0;i<names.length;i++){
var
n = names[i];
c.innerHTML +=
"<div onmouseover='overColor(this)' onmouseout='outColor(this)' onclick='setValue(this.innerHTML)' >"
+n+
"</div>"
;
}
// 显示
c.style.display =
"block"
;
}
};
};
function
overColor(div){
div.style.backgroundColor =
"red"
;
}
function
outColor(div){
div.style.backgroundColor =
"white"
;
}
function
setValue(val){
document.getElementById(
"name"
).value = val;
var
c = document.getElementById(
"content"
);
c.style.display =
"none"
;
}
|