flask和ajax中的post和get方法小结

最近在学python的web开发,非常喜欢python简洁干净的语法,一向不是非常喜欢集成东西多的框架,正好公司里用的是flask这种“micro framework”,就开始自学。学了个大概之后首先遇到的问题时,如何用get和post进行前后端数据交互。网上对于flask的问题不是非常多,就自己小结一下。


1. ajax vs get

$.ajax({
	type: "get",
	url: "http://127.0.0.1:5000/login",
	contentType: "application/json;charset=utf-8",
	dataType: "json",
	data: "username="+$("#username input").val()+"&password="+$("#password input").val(),
	success: function(data){
		//handle data			
	}
});

$.get({
	"http://127.0.0.1:5000/login",
	{"username": $("#username input").val(),"&password": $("#password input").val()},
	success: function(data){
		//handle data			
	}
});


当时遇到一个很奇怪的问题,用$.get的简略ajax方法,返回的data中如果有中文会出现乱码,无论如何在后端方法中加入encode('utf8')都无法解决。后来通过修改为最原始的ajax方法,可能是定义了contentType中的charset,乱码问题顺利解决

2. ajax vs post

$.ajax({
	type: "post",
	url: "http://127.0.0.1:5000/submitSheet",
	contentType: "application/json;charset=utf-8",
	dataType: "json",
	data: {'location': $("#location").val()},
	success: function(data){
		//handle data
	}
});

$.post(
	"http://127.0.0.1:5000/submitSheet",
	{'location':$("#location").val()},
	function(data){
		var json = JSON.parse(data);
		alert(json.result);
	}
);


由于直接用get方法曾遇到过乱码问题,在遇到较大数据传输时就直接选择了用$.ajax的原始形式,可是发现总是报400 bad request错误,而后台的数据获取绝对正确,所以又尝试了用$.post的简略形式,又顺利解决问题。


到了这里其实有点奇怪,本人也只是时间之余自己学习,对底层技术并不非常了解。对于get\post\ajax的选择问题还有待发掘其中的秘密。


3. 处理返回的data

假设后端返回的数据格式为:

return json.dumps({'status': status, 'result': result})

如果使用$.ajax,其中定义了dataType为json格式,所以可以直接用data.status和data.result来获取数据,如果result也是json格式的,但是在传输数据时冒号后面的部分会被转化为string,所以可能需要用JSON.parse(转化为json格式. 

如果是使用$.get或者$.post,那么在处理data时需要首先使用JSON.parse()将string转化为json格式。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值