Ajax:
jquery提供的ajax功能:
$.ajax({
url:'/host',
type:'POST',
data:{'k1':123, 'k2':'root'},
success: function(data){
}
})
success的匿名函數(shù)function要等到服務(wù)端返回來的時候桐早,才會執(zhí)行塞赂。
function的data是服務(wù)端返回的數(shù)據(jù)责鳍。
jquery綁定事件:
$('#ajax_submit').click(function(){
$.ajax({
url:'/test_ajax',
type:'GET',
data:{'username':'root', 'passoword':'123456'}
success: function(data){
}
})
})
在jquery中医清,還有:
1)$.get
:就是調(diào)用上面的jquery提供的ajax功能放可,只是里面的type為get.還是推薦上面的方式法褥。
使用方法:
$.get(url='xx', data={}, succusse...)
2)$.post
:就是調(diào)用上面的jquery提供的ajax功能茫叭,只是里面的type為post.
3)$.getJson
:
Ajax請求返回的是:HttpResponse(json.dumps(dict))
返回的是一個json字符串(可以反序列化為字典)。
在template里面:
success:function(data){
var obj = JSON.parse(data); # 將json字符串轉(zhuǎn)為對象
}
在前端string與對象的相互轉(zhuǎn)換:
li = [1,2,3,4]
str = JSON.stringify(li) # 轉(zhuǎn)為字符串
JSON.parse(str) # 轉(zhuǎn)為對象
經(jīng)驗(yàn)建議:
永遠(yuǎn)讓服務(wù)器端返回一個字典
return HttpResponse(json.dumps(dict))
經(jīng)驗(yàn):
- 使用ajax做退出登錄/頁面的跳轉(zhuǎn):(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', # 實(shí)驗(yàn)的時候半等,這個加上傳不過去數(shù)據(jù)揍愁,我就注釋了
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>標(biāo)簽
比如<a>標(biāo)簽的href可以GET請求。
如果想要在GET請求之前做些計算饵沧,可以在Js中寫一個js方法锨络,計算,跳轉(zhuǎn):
function redirect_func(){
var page = page_c + 1;
self.location = "/app01/index2?page="+ page +"/";
}