zoukankan      html  css  js  c++  java
  • python之路二十

    一, $.ajax,这个是JQuery对ajax封装的最基础步,通过使用这个函数可以完成异步通讯的所有功能。也就是说什么情况下我们都可以通过此方法进行异步刷新的操作。但是它的参数较多,有的时候可能会麻烦一些。看一下常用的参数:      

     var configObj = {

           method   //数据的提交方式:get和post

           url   //数据的提交路劲

           async   //是否支持异步刷新,默认是true

           data    //需要提交的数据

           dataType   //服务器返回数据的类型,例如xml,String,Json等

           success    //请求成功后的回调函数

           error   //请求失败后的回调函数

        }

     

    $.ajax(configObj);//通过$.ajax函数进行调用。

     

               好,看一个实际的例子吧,看一个进行异步删除的例子:

    [javascript] view plain copy print?在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:18px;">          // 删除  
    2.                 $.ajax({  
    3.                     type : "POST",  //提交方式  
    4.                     url : "${pageContext.request.contextPath}/org/doDelete.action",//路径  
    5.                     data : {  
    6.                         "org.id" : "${org.id}"  
    7.                     },//数据,这里使用的是Json格式进行传输  
    8.                     success : function(result) {//返回数据根据结果进行相应的处理  
    9.                         if ( result.success ) {  
    10.                             $("#tipMsg").text("删除数据成功");  
    11.                             tree.deleteItem("${org.id}", true);  
    12.                         } else {  
    13.                             $("#tipMsg").text("删除数据失败");  
    14.                         }  
    15.                     }  
    16.                 });  
    17. </span>  


               二,$.post,这个函数其实就是对$.ajax进行了更进一步的封装,减少了参数,简化了操作,但是运用的范围更小了。$.post简化了数据提交方式,只能采用POST方式提交。只能是异步访问服务器,不能同步访问,不能进行错误处理。在满足这些情况下,我们可以使用这个函数来方便我们的编程,它的主要几个参数,像method,async等进行了默认设置,我们不可以改变的。例子不再介绍。

    url:发送请求地址。

    data:待发送 Key/value 参数。

    callback:发送成功时回调函数。

    type:返回内容格式,xml, html, script, json, text,_default。

     

            三,$.get,和$.post一样,这个函数是对get方法的提交数据进行封装,只能使用在get提交数据解决异步刷新的方式上,使用方式和上边的也差不多。这里不再演示。

     

            四, $.getJSON,这个是进一步的封装,也就是对返回数据类型为Json进行操作。里边就三个参数,需要我们设置,非常简单:url,[data],[callback]。

     

            其实会了$.ajax方法,其它的就都会使用了,都是一样的,其实非常简单。

     

            但是这里还有一个问题,比较麻烦,就是如果页面数据量比较大,该怎么办呢?在常规表单的处理中,我们使用框架Struts2可以通过域驱动模式进行自动获取封装,那么通过ajax,如何进行封装呢?这里JQuery有一个插件,Jquery Form,通过引入此js文件,我们可以模仿表单Form来支持Struts2的域驱动模式,进行自动数据的封装。用法和$.ajax类似,看一下实际的例子,这里写一个保存用户的前台代码:

     

    [javascript] view plain copy print?在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:18px;">  $(function(){  
    2.         var options = {  
    3.             beforeSubmit : function() {//处理以前需要做的功能  
    4.                 $("tipMsg").text("数据正在保存,请稍候...");  
    5.                 $("#insertBtn").attr("disabled", true);  
    6.             },  
    7.             success : function(result) {//返回成功以后需要的回调函数  
    8.                 if ( result.success ) {  
    9.                     $("#tipMsg").text("机构保存成功");  
    10.                                       
    11.                                        //这里是对应的一棵树,后边会介绍到,  
    12.                     // 控制树形组件,增加新的节点  
    13.                     var tree = window.parent.treeFrame.tree;  
    14.                     tree.insertNewChild("${org.id}", result.id, result.name);  
    15.                 } else {  
    16.                     $("#tipMsg").text("机构保存失败");  
    17.                 }  
    18.                 // 启用保存按钮  
    19.                 $("#insertBtn").attr("disabled", false);  
    20.             },  
    21.             clearForm : true  
    22.         };  
    23.       
    24.         $('#orgForm').ajaxForm(options); //通过Jquery.Form中的ajaxForm方法进行提交  
    25.     });  
    26. </span>  

    多对多:
        创建多对多:
            方式一:自定义关系表
                class Host(models.Model):
                    nid = models.AutoField(primary_key=True)
                    hostname = models.CharField(max_length=32,db_index=True)
                    ip = models.GenericIPAddressField(protocol="ipv4",db_index=True)
                    port = models.IntegerField()
                    b = models.ForeignKey(to="Business", to_field='id')
                # 10
                class Application(models.Model):
                    name = models.CharField(max_length=32)
                # 2
                
                class HostToApp(models.Model):
                    hobj = models.ForeignKey(to='Host',to_field='nid')
                    aobj = models.ForeignKey(to='Application',to_field='id')
                    
                # HostToApp.objects.create(hobj_id=1,aobj_id=2)
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    
            方式二:自动创建关系表
                class Host(models.Model):
                    nid = models.AutoField(primary_key=True)
                    hostname = models.CharField(max_length=32,db_index=True)
                    ip = models.GenericIPAddressField(protocol="ipv4",db_index=True)
                    port = models.IntegerField()
                    b = models.ForeignKey(to="Business", to_field='id')
                # 10
                class Application(models.Model):
                    name = models.CharField(max_length=32)
                    r = models.ManyToManyField("Host")
                    
                无法直接对第三张表进行操作
                
                obj = Application.objects.get(id=1)
                obj.name
                
                # 第三张表操作
                obj.r.add(1)
                obj.r.add(2)
                obj.r.add(2,3,4)
                obj.r.add(*[1,2,3,4])
                
                obj.r.remove(1)
                obj.r.remove(2,4)
                obj.r.remove(*[1,2,3])
                
                obj.r.clear()
                
                obj.r.set([3,5,7])
                
                # 所有相关的主机对象“列表” QuerySet
                obj.r.all()
               

  • 相关阅读:
    -bash: fork: Cannot allocate memory 问题的处理
    Docker top 命令
    docker常见问题修复方法
    The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
    What's the difference between encoding and charset?
    hexcode of é î Latin-1 Supplement
    炉石Advanced rulebook
    炉石bug反馈
    Sidecar pattern
    SQL JOIN
  • 原文地址:https://www.cnblogs.com/hexinzhao/p/6214207.html
Copyright © 2011-2022 走看看