zoukankan      html  css  js  c++  java
  • django ajax使用

    ajax Asynchronous JavaScript and XML异步javascript和XML。

    同步:客户端发送数据后需要等到服务端响应结束后,才能发出第二个请求。

    异步:客户端发送数据后无需等服务端响应就可以执行第二个请求。

    ajax使用Javascript技术向服务器发送异步请求,可以实现在不重载整个网页的情况下,ajax通过后台加载数据,并在网页上显示。

    在forms.py中创建表单

    class LoginForm(forms.Form):
        user = forms.CharField(required=True,error_messages={'required':用户名为空})
        pwd = forms.CharField(required=True,min_length=6,error_messages={'required':'密码不能为空','min_length':'至少6位'})
        num = forms.IntegerField(error_messages={'required':'数字不能为空','invalid':'必须为数字'})
        phone = forms.CharField(required=True)

    在views.py中

    def login(request):
        if request.method == 'POST':
            result = {'status':False,'message':None}
            obj = LoginForm(request.POST)
            ret = obj.is_valid()
            if ret:
                print(ret.clean())
                result['status'] = True
            else:
                error_str = obj.errors.as_json()
                result['message'] = json.loads(error_str)
            return HttpResponse(json.dumps(result))
        return render(request,'ajax02.html')

    在ajax02.html中

    <div>
        <div><input type="text" name="user"></div>
        <div><input type="password" name="pwd"></div>
        <div><input type="text" name="num"></div>
        <div><input type="text" name="phone"></div>
        <input type="button" value="提交" onclick="DoSubmit();">
    </div>
    <script type="text/javascript">
        function DoSubmit(){
            var input_dic = {}
            $('input').each(function(){
                var v = $(this).val();
                var n = $(this).attr('name');
                input_dic[n] = v;
            });
            console.log(input_dic);
            $('.error-msg').remove();
            $.ajax({
                     type: "POST",
                     url: "/app05/login/",
                     data: input_dic,
                     dataType: 'json',
                     success: function(result){
                                  if(result.status){
                                           location.href= '/index/';
                                  }
                                  else{
                                           $.each(result.message,function(k,v){
                                                    console.log(n,v[0].message);
                                                    var tag = document.createElement('span');
                                                    tag.className = 'error-msg';
                                                    tag.innerText = v[0].message;
                                                    $('input[name=" ' + n ' "]').after(tag);
                                           });
                                  }
                     },
                     error: function(){}
            });
        }
    </script>

    当表单中的数据合法时跳转到index页面;当数据不合法时在输入框后面显示错误信息。

    总结:

      Ajax参数:

        url:提交表单内容到views里的某个函数

        type: 提交方式(POST或GET)

        data: 提交到后台的数据,将自动转换成字符串格式

        dataType: 指定数据处理方式(XML,HTML,JSON,JSONP)

        回掉函数(callback): 处理$.ajax()得到的数据:

          success:当请求之后调用,传入返回后的数据,以及包含成功代码的字符串

          error: 在请求出错时调用,传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象

  • 相关阅读:
    iOS SpriteKit 字体设置无效问题
    2021又来到了!
    其他人员优点
    自己缺点记录
    领导优点分析-于总
    领导优点分析-黄总
    Linux CentOS 7 安装字体库 & 中文字体
    mysql备份数据库
    MySQL mysqldump 导入/导出 结构&数据&存储过程&函数&事件&触发器
    mysql 导入导出数据库以及函数、存储过程的介绍
  • 原文地址:https://www.cnblogs.com/homle/p/8629759.html
Copyright © 2011-2022 走看看