通过jQuery ajax方法前后台传输数据

5 篇文章 0 订阅

JS

$.ajax({
	url: "checkName",
	type: "POST",
	data: {"name": "Dannil"},
	dataType: "json",
	success: function(data){
		console.log(data);
        console.log(typeof data);
		console.log(data["token"]);
	},
	beforeSubmit:function () {
	},
	error: function () {
		console.log("fail");
	},
	complete:function () {
		console.log("complete");
	},
})

Java

    @RequestMapping(value = "/checkName")
    public Boolean CheckUser(HttpServletResponse response,
                             HttpServletRequest request) throws IOException {
 
        PrintWriter writer = new PrintWriter(response.getWriter());
        writer.write("{\"token\":1}");
        writer.close();
        return true;
    }

浏览器控制台打印日志

{token: 1}
object
 1
complete

 

需要注意数据格式问题

1、后台构造json格式字符串时,要注意key需要加引号,如下会请求失败,

writer.write("{token:1}");

控制台打印结果

error
complete

2、dataType: "json",去掉,打印如下

{token:1}
string
undefined
complete

因为规定返回数据类型时json格式,所以不满足表示请求失败,执行error方法。

另外需要注意的是,第一次接收的数据类型是object,第二次是string,猜测dataType参数会使字符串转换为JSON对象

3、传递正确的json字符串,并且把dataType参数去掉

{"token":1}
string
undefined
complete

可以看到字符串被原封不动打印出来,并且数据类型是string,所以data["token"]返回值是undefined

4、通过JSON.parse()方法把字符串转换为JSON对象

success: function(data){
	console.log(data);
	console.log(typeof data);
	let obj = JSON.parse(data);
	console.log(typeof obj);
	console.log(obj["token"]);
},
{"token":1}
string
object
1
complete

5、通过fastjson包中的JSONObject构建数据

PrintWriter writer = new PrintWriter(response.getWriter());

Map map = new HashMap();
map.put("token", 1);

JSONObject json = new JSONObject(map);
writer.write(json.toString());
writer.close();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值