js和java的http通信

可查看基于ajax的前后端多种数据交互:

https://my.oschina.net/u/3697586/blog/1592818

js 发送text & 接收 text

js部分

  <script>
var xmlhttp;
function callback() {
    if (xmlhttp.readyState==4){// 4 = "loaded"
        if (xmlhttp.status==200){// 200 = OK
            alert("成功了 = " + xmlhttp.responseText);
        }else{
            alert("error");
        }
    }
}
//POST方式
function test(){
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange=callback;
    xmlhttp.open("POST","test.do",true);
    // 设置POST请求的请求头  POST需添加这项  GET可不需要.
    xmlhttp.setRequestHeader("Content-Type"
        , "application/x-www-form-urlencoded");
    xmlhttp.send('password=123&username=mingzi');
}
//GET方式
function test(){
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange=callback;
    xmlhttp.open("GET","test.do?password=123&username=mingzi",true);
    // 设置POST请求的请求头  POST需添加这项  GET可不需要.
    //xmlhttp.setRequestHeader("Content-Type"
    //, "application/x-www-form-urlencoded");
    xmlhttp.send('password=123&username=mingzi');
}
</script>   

java部分

    @RequestMapping(value="/test.do",produces="text/html;charset=UTF-8;")
    @ResponseBody
    public String test(HttpServletRequest request){
        String username=request.getParameter("username");
        String password=request.getParameter("password");
        String url=request.getRequestURI();
        String path=request.getServletPath();
        String method =request.getMethod();
        System.out.println("\n url is:"+url);
        System.out.println("\n path is:"+path);
        System.out.println("\n method is:"+method);
        System.out.println("\n username is:"+username);
        System.out.println("\n password is:"+password);
        return "这是后台中文字符";
    }  

后台输出

  url is:/test.do
  path is:/test.do
  method is:GET
  username is:mingzi
  password is:123

js 发送text 接收json

js部分

  <script>
    var xmlhttp;
    function callback() {

        if (xmlhttp.readyState==4){// 4 = "loaded"
            if (xmlhttp.status==200){// 200 = OK
                var data = xmlhttp.responseText;
                var jsonobj = eval('(' + data + ')');
                var strTemp = eval('jsonobj.one');
                console.log("\n data =  " + data);
                console.log("\n jsonobj = " + jsonobj);
                alert(strTemp);
            }else{
                alert("error");
            }
        }
    }
    function test(){
        xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange=callback;
        xmlhttp.open("POST","test.do",true);
//        // 设置POST请求的请求头
        xmlhttp.setRequestHeader("Content-Type"
            , "application/json");
        xmlhttp.send('password=123&username=mingzi');
    }
</script>  

java部分

  @RequestMapping(value="/test.do")
@ResponseBody
public JSONObject test(HttpServletRequest request){
    String username=request.getParameter("username");
    String password=request.getParameter("password");
    String url=request.getRequestURI();
    String path=request.getServletPath();
    String method =request.getMethod();
    System.out.println("\n url is:"+url);
    System.out.println("\n path is:"+path);
    System.out.println("\n method is:"+method);
    System.out.println("\n username is:"+username);
    System.out.println("\n password is:"+password);

    JSONObject obj = new JSONObject();
    obj.put("one","一个");
    obj.put("two","两个");
    System.out.println("\n obj is:"+obj);
    return obj;
}  
特别注意 java想要返回给前端json数据必须引入一下两个包 (否则会出现406错误)
  @ResponseBody返回json格式的数据,而浏览器接受的是text/html;charset=UTF-8文本类型
  解决方法:添加json所需要的依赖
  <!-- jackson start -->
<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-core-asl</artifactId>
</dependency>
<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-mapper-lgpl</artifactId>
  <version>1.9.12</version>
</dependency>   

关于mediaTypes配置和"accept" headers

  前端 ACCEPT 类型如下
  *.3gpp	audio/3gpp, video/3gpp	3GPP Audio/Video
  *.ac3	audio/ac3	AC3 Audio
  *.asf	allpication/vnd.ms-asf	Advanced Streaming Format
  *.au	audio/basic	AU Audio
  *.css	text/css	Cascading Style Sheets
  *.csv	text/csv	Comma Separated Values
  *.doc	application/msword	MS Word Document
  *.dot	application/msword	MS Word Template
  *.dtd	application/xml-dtd	Document Type Definition
  *.dwg	image/vnd.dwg	AutoCAD Drawing Database
  *.dxf	image/vnd.dxf	AutoCAD Drawing Interchange Format
  *.gif	image/gif	Graphic Interchange Format
  *.htm	text/html	HyperText Markup Language
  *.html	text/html	HyperText Markup Language
  *.jp2	image/jp2	JPEG-2000
  *.jpe	image/jpeg	JPEG
  *.jpeg	image/jpeg	JPEG
  *.jpg	image/jpeg	JPEG
  *.js	text/javascript, application/javascript	JavaScript
  *.json	application/json	JavaScript Object Notation
  *.mp2	audio/mpeg, video/mpeg	MPEG Audio/Video Stream, Layer II
  *.mp3	audio/mpeg	MPEG Audio Stream, Layer III
  *.mp4	audio/mp4, video/mp4	MPEG-4 Audio/Video
  *.mpeg	video/mpeg	MPEG Video Stream, Layer II
  *.mpg	video/mpeg	MPEG Video Stream, Layer II
  *.mpp	application/vnd.ms-project	MS Project Project
  *.ogg	application/ogg, audio/ogg	Ogg Vorbis
  *.pdf	application/pdf	Portable Document Format
  *.png	image/png	Portable Network Graphics
  *.pot	application/vnd.ms-powerpoint	MS PowerPoint Template
  *.pps	application/vnd.ms-powerpoint	MS PowerPoint Slideshow
  *.ppt	application/vnd.ms-powerpoint	MS PowerPoint Presentation
  *.rtf	application/rtf, text/rtf	Rich Text Format
  *.svf	image/vnd.svf	Simple Vector Format
  *.tif	image/tiff	Tagged Image Format File
  *.tiff	image/tiff	Tagged Image Format File
  *.txt	text/plain	Plain Text
  *.wdb	application/vnd.ms-works	MS Works Database
  *.wps	application/vnd.ms-works	Works Text Document
  *.xhtml	application/xhtml+xml	Extensible HyperText Markup Language
  *.xlc	application/vnd.ms-excel	MS Excel Chart
  *.xlm	application/vnd.ms-excel	MS Excel Macro
  *.xls	application/vnd.ms-excel	MS Excel Spreadsheet
  *.xlt	application/vnd.ms-excel	MS Excel Template
  *.xlw	application/vnd.ms-excel	MS Excel Workspace
  *.xml	text/xml, application/xml	Extensible Markup Language
  *.zip	aplication/zip	Compressed Archive

转载于:https://my.oschina.net/u/3697586/blog/1543644

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值