Ajax:
jquery提供的ajax功能:
$.ajax({
url:'/host',
type:'POST',
data:{'k1':123, 'k2':'root'},
success: function(data){
}
})
success的匿名函数function要等到服务端返回来的时候,才会执行。
function的data是服务端返回的数据。
jquery绑定事件:
$('#ajax_submit').click(function(){
$.ajax({
url:'/test_ajax',
type:'GET',
data:{'username':'root', 'passoword':'123456'}
success: function(data){
}
})
})
在jquery中,还有:
1)$.get
:就是调用上面的jquery提供的ajax功能,只是里面的type为get.还是推荐上面的方式。
使用方法:
$.get(url='xx', data={}, succusse...)
2)$.post
:就是调用上面的jquery提供的ajax功能,只是里面的type为post.
3)$.getJson
:
Ajax请求返回的是:HttpResponse(json.dumps(dict))
返回的是一个json字符串(可以反序列化为字典)。
在template里面:
success:function(data){
var obj = JSON.parse(data); # 将json字符串转为对象
}
在前端string与对象的相互转换:
li = [1,2,3,4]
str = JSON.stringify(li) # 转为字符串
JSON.parse(str) # 转为对象
经验建议:
永远让服务器端返回一个字典
return HttpResponse(json.dumps(dict))
经验:
- 使用ajax做退出登录/页面的跳转:(https://stackoverflow.com/questions/46191656/the-render-do-not-render-to-the-template/46191957#46191957)
2.示例:
$.ajax({
type:'post',
url:'/app_api/buy_server/',
//contentType:'application/json', # 实验的时候,这个加上传不过去数据,我就注释了
data:JSON.stringify({'params':buy_data}), # 如果加了JSON.stringify(),那么在views.py中需要,json.loads(request.body).get("server_id")去获得。 注意:如果是字典包的字典或者其他东西,那么需要JSON.stringify()才好。见下面的sof链接。
dataType:'json',
success:success_func # 注意:这里没有逗号,有的话会报错。
})
sof链接: https://stackoverflow.com/questions/46488148/how-can-i-get-my-params-in-querydict
3.ajax与<a>标签
比如<a>标签的href可以GET请求。
如果想要在GET请求之前做些计算,可以在Js中写一个js方法,计算,跳转:
function redirect_func(){
var page = page_c + 1;
self.location = "/app01/index2?page="+ page +"/";
}