微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AJAX - $.get( url, [data], [success], [type] )-3

上一篇http://www.jb51.cc/article/p-olpzclwq-bpe.html

提到请求格式为$.get(url,queryString,function(data){}解决的两种思路;
以及请求格式为$.get(url,{mydata:queryString},function(data){}的两种思路。

本篇讲一下下面格式的后台接收第三种思路:

queryString = $('#editform').serializeArray();
queryString = JSON.stringify(queryString);//string
//querystring为json 字符串数组
$.get(url,function(data){}

后台接收方法

思路 :使用request.getParameter("key");

package com.atgui.ajax.app.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.HashMap;

import javax.servlet.servletexception;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.codehaus.jackson.map.ObjectMapper;

public class GetServlet3 extends HttpServlet {

    /** * queryString = $('#editform').serializeArray(); queryString = JSON.stringify(queryString);//string $.get(url,function(data){}); */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    public void doGet(HttpServletRequest request,HttpServletResponse response)
            throws servletexception,IOException {

        doPost(request,response);
    }

    public void doPost(HttpServletRequest request,IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();


        String jsonString =request.getParameter("mydata") ;
        System.out.println(jsonString);


        ObjectMapper objectMapper = new ObjectMapper();
        String resultJson = objectMapper.writeValueAsstring(jsonString);
        System.out.println("resultJson ..."+resultJson);

        out.print(resultJson);
        out.flush();
        out.close();
    }

    public void init() throws servletexception {
        // Put your code here
        System.out.println("getServlet init()....");
    }

}

result as follows :

//启动servlet
getServlet init()....

//解析得到的mydata
[{"name":"username","value":"yanshi02"},{"name":"password","value":"123456"}]

//返回的json
resultJson ..."[{\"name\":\"username\",\"value\":\"yanshi02\"},{\"name\":\"password\",\"value\":\"123456\"}]"

如果直接返回jsonString ,此时typeof data = object ; 那么不需要进行解析可以直接使用data.key获取json 属性

  • 拿到返回的data
  • 进行JSON遍历!

如果返回resultJson,则需要进行解析 ,才可以遍历json属性

解析过程参考 前面讲的post

【F12查看浏览器】

可以看到浏览器对URL里面的数组进行了编码,但是我后台并没有显示使用URL解码:

String jsonString2 = URLDecoder.decode(jsonString.toString(),"UTF-8");
        System.out.println(jsonString2);

结果仍然正确!

关于解码编码问题,可以参考我写的系列文章HTTP请求中的编码解码

Tips:

参考post参考post传输参数数据格式为{key : value}可知:

无论 get 或者 post ,如果data为{key : value}形式。

则都可以使用request.getParameter("key");的形式进行获取

原文地址:https://www.jb51.cc/ajax/161433.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐