zoukankan      html  css  js  c++  java
  • 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转化不需要加()

  • 相关阅读:
    Clion 配置
    JetBrains 全套激活 Pycharm Clion 高校学生老师免费用
    VS Code 搭建 C/C++ 编译运行环境的四种方案 (待完善)
    专治编译器编辑器vscode中文乱码输出 win10 配置系统默认utf-8编码
    AlexeyAB大神版yolo 待完善
    Python 的 GUI 开发工具
    Python打包—Pyinstaller
    pip freeze 打包依赖库及setup.py
    jenkins中布置python测试
    在Ubuntu上安装Jenkins
  • 原文地址:https://www.cnblogs.com/2393920029-qq/p/12246685.html
Copyright © 2011-2022 走看看