XMLHttpRequest前后交互

js内部代码:

//定义json数据

var userjson={
u_name : in_value
};

//将userjson转字符串

var json=JSON.stringify(userjson);

//定义XMLHttpRequest对象
var myajax=new XMLHttpRequest();

//打开连接 请求方式  路径  异步或同步
myajax.open("post","../Test",true);

//设置请求头
myajax.setRequestHeader('content-type', 'application/json');

//发送数据
myajax.send(json);

servlet服务器端处理,用的gson:

//利用流的方式进行读取请求

BufferedReader reader = request.getReader();
StringBuffer sb =new StringBuffer();
String line=null;
while((line=reader.readLine())!=null) {
sb.append(line);
}

//创建gson对象
Gson gson =new Gson();

//将数据与类绑定,或者将字符串进行截取用map集合添加
Uit fromJson = gson.fromJson(sb.toString(), Uit.class);

//显示数据

System.out.println(fromJson.getU_name());

servlet服务器用json写回前端

Map<String, String> map=new HashMap<String, String>();
map.put("name", "zhangsan1");

//将map转化为json字符串
String json = gson.toJson(map);
System.out.println(json);

//写回
response.getWriter().print(json);

js读取servlet写回的数据:

onload:响应完成

myajax.onload=function (){

//将字符串转为json对象
var json=eval("("+myajax.responseText+")");

//显示
alert(json.name);

注意:

遇到多层的需要一层一层转,最后只剩一层才能点

数据:

{"key0":{"d_id":-1,"d_name":"","d_tel":-1,"d_massage":"","d_up":-1}}

代码:

myajax.onload=function (){  
var obj=eval("("+myajax.responseText+")");

//拨开了第一层
var json=eval("("+JSON.stringify(obj.key0)+")");
alert(json.d_id);
}

复杂点的:

{"key1":{"d_id":2345,"d_name":"cc","d_tel":1111,"d_massage":"无","d_up":0},"key2":{"d_id":23455,"d_name":"bb","d_tel":23456,"d_massage":"无","d_up":0},"key0":{"d_id":1234,"d_name":"aa","d_tel":123456,"d_massage":"无","d_up":0}}

var obj=eval("("+myajax.responseText+")");
for(var i in obj){
var json=eval("("+JSON.stringify(obj[i])+")");

alert(json.d_id);

数组的话[]可以直接用eval转化不需要加()

原文地址:https://www.cnblogs.com/2393920029-qq/p/12246685.html