• AJax 笔记


    AJax

    1、单条数据提交

    在上面的原有例子中的html中新增下面html内容

    <form action="/user_list/" method="post">
            <input type="button" onclick="Ajaxsubmit();" value="提交"/>
            <table>
                <thead>
                    <tr>
                        <th>主机名</th>
                        <th>端口</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>1.1.1.1</td>
                        <td>80000</td>
                    </tr>
                    <tr>
                        <td>1.1.1.1</td>
                        <td>80000</td>
                    </tr>
                </tbody>
            </table>
        </form>
        <script type="text/javascript" src="/static/jquery-2.2.1.min.js"></script>
        <script>
            function Ajaxsubmit(){
                var host = '1.1.1.1';
                var port = '8000';
    
                $.ajax({
                    url:"/ajax_data/",
                    type:'POST',
                    data:{h:host,p:port}, 
                    success:function(arg){
    
                    }
                })
            }
        </script>

     注释

                $.ajax({
                    url:"/ajax_data/",  # 目标URL
                    type:'POST', # 请求方式
                    data:{h:host,p:port},  #  以h和p为key用户的输入为value:<QueryDict: {u'h': [u'1.1.1.1'], u'p': [u'8000']}>
                    success:function(arg){
    
                    }

    增加URL和views

    url(r'^ajax_data/', views.ajax_data),
    def ajax_data(request):
        print request.POST
        return HttpResponse('OK')

    2、ajax多条数据提交

    在原来的基础上修改Jquery

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form action="/ajax_data/" method="post">
            <p>用户:{{ obj.user }}<span>{{ errors.user }}</span></p>
            <p>密码:{{ obj.pwd }}<span>{{ errors.pwd }}</span></p>
            <p>端口:{{ obj.port }}<span>{{ errors.port }}</span></p>
            <p>主机:{{ obj.host }}<span>{{ errors.host }}</span></p>
            <p>邮箱:{{ obj.email }}<span>{{ errors.email }}</span></p>
            <p>{{ obj.user_type }}</p>
            <input type="submit" value="submit"  />
        </form>
            <input type="text" value="username" name="user" />
            <input type="button" onclick="Ajaxsubmit();" value="提交" />
        <table>
            <thead>
                <tr>
                    <th>主机名</th>
                    <th>端口</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>1.1.1.1</td>
                    <td>8080</td>
                </tr>
                <tr>
                    <td>1.1.1.1</td>
                    <td>8080</td>
                </tr>
            </tbody>
        </table>
    
    
        <script type="text/javascript" src="/static/js/jquery-1.12.4.js"></script>
        <script>
            function Ajaxsubmit(){
                var array_users = [
                    {'username':'rain'},
                    {'pwd':'123456'},
                    {'email':'rain@163.com'}
                        ];
    
                $.ajax({
                    url:'/ajax_data',
                    type:'POST',
                    data:{data: array_users},
                    success: function (arg) {
    } }) }
    </script> </body> </html>

    点击提交(在server端打印看下):

    <QueryDict: {'data[2][email]': ['rain@163.com'], 'data[0][username]': ['rain'], 'data[1][pwd]': ['123456']}>

    上面的结果数据是有问题的!他给咱们做了个加工,咱们没给他传data[1],data[0]了吗?

    所以咱们的在ajax增加参数

        <script type="text/javascript" src="/static/js/jquery-1.12.4.js"></script>
        <script>
            function Ajaxsubmit(){
                var array_users = [
                    {'username':'rain'},
                    {'pwd':'123456'},
                    {'email':'rain@163.com'}];
    $.ajax({ url:
    '/ajax_data', type:'POST', tradition: true, data:{data: JSON.stringify(array_users)}, success: function (arg) { } }) } </script>

    增加了两项:

    # 以原生的模式传过去
    tradition: true,  
    
    # 把数组做一步处理转成字符串
    data:{data:JSON.stringify(array_users)},

    3、在一个Ajax请求之后,返回信息应该更职业化,不能单单发送一个字符串

    下面的例子先用json来做,不过还有一个json response

    import json
    
    def ajax_data(request):
        ret = {'status':True,'error':''}
        try:
            print request.POST
        except Exception,e:
            ret['status'] = False
            ret['error'] = str(e)
        #在上面如果他出错我就把他ret[status] = False
        return HttpResponse(json.dumps(ret))

    html的js也得修改下:

        <script>
            function Ajaxsubmit(){
                var array_users = [
                    {'username':'rain'},
                    {'pwd':'123456'},
                    {'email':'rain@163.com'}
                        ];
    
                $.ajax({
                    url:"/ajax_mdata/",
                    type:'POST',
                    tradition: true,
                    data:{data:JSON.stringify(array_users)},
                    success:function(arg){
                        var callback_dict = $.parseJSON(arg);//这里把字符串转换为对象
                        //然后咱们就可以判断
                        if(callback_dict){//执行成功了
                            //简单测试
                            alert('提交成功')
                        }else{//如果为False执行失败了
                            alert(callback_dict.error)
                        }
    
                    }
                })
            }
        </script>    

             

                 END......

  • 相关阅读:
    iOS 关于第三方键盘
    linux分期挂载永久生效
    linux echo 用法 【 -e c 体会】
    expr index
    tail -f 不好用? 用法小解析
    【Linux】su
    Linux 下mv命令使用 目标目录不存在时会更名被目标目录并放在/目录下
    Java一点笔试题【2016-04-13】
    Linux 上重启tomcat 【转】 http://www.cnblogs.com/tovep/articles/2473147.html
    Oracle Merge into [转] [ http://www.cnblogs.com/dongsheng/p/4384754.html]
  • 原文地址:https://www.cnblogs.com/yxy-linux/p/5859018.html
Copyright © 2020-2023  润新知