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 +"/";
}