Python与AJAX

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))


经验:

  1. 使用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与标签

比如标签的href可以GET请求。
如果想要在GET请求之前做些计算,可以在Js中写一个js方法,计算,跳转:

function redirect_func(){
     var page = page_c + 1;
     self.location = "/app01/index2?page="+ page +"/";
}

你可能感兴趣的:(Python与AJAX)