zoukankan      html  css  js  c++  java
  • jQuery中$.get()、$.post()和$.ajax()

    1、jQuery.get()方法

    $.get(url,data,success(response,status,xhr),dataType)

    该函数是简写的 Ajax 函数,等价于:

    [javascript] view plain copy
     
    1. $.ajax({  
    2.   url: url,  
    3.   data: data,  
    4.   success: success,  
    5.   dataType: dataType  
    6. });  

    根据响应的不同的 MIME 类型,传递给 success 回调函数的返回数据也有所不同,这些数据可以是 XML root 元素、文本字符串、JavaScript 文件或者 JSON 对象。也可向 success 回调函数传递响应的文本状态。

    参数 描述
    url 必需。规定将请求发送的哪个 URL。
    data 可选。规定连同请求发送到服务器的数据。
    success(response,status,xhr) 可选。规定当请求成功时运行的函数。
    额外的参数:
    response - 包含来自请求的结果数据
    status - 包含请求的状态
    xhr - 包含 XMLHttpRequest 对象
    dataType 可选。规定预计的服务器响应的数据类型。
    默认地,jQuery 将智能判断。
    可能的类型:
    "xml"
    "html"
    "text"
    "script"
    "json"
    "jsonp"

    使用 AJAX 的 GET 请求来改变 div 元素的文本:

    [javascript] view plain copy
     
    1. $("button").click(function(){  
    2.   $.get("demo_ajax_load.txt", function(result){  
    3.     $("div").html(result);  
    4.   });  
    5. });  

    2、jQuery.post()方法

    $.post(url,data,success(data, textStatus, jqXHR),dataType)

    该函数是简写的 Ajax 函数,等价于:

    [javascript] view plain copy
     
    1. $.ajax({  
    2.   type: 'POST',  
    3.   url: url,  
    4.   data: data,  
    5.   success: success,  
    6.   dataType: dataType  
    7. });  

    根据响应的不同的 MIME 类型,传递给 success 回调函数的返回数据也有所不同,这些数据可以是 XML 根元素、文本字符串、JavaScript 文件或者 JSON 对象。也可向 success 回调函数传递响应的文本状态。

    参数 描述
    url 必需。规定把请求发送到哪个 URL。
    data 可选。映射或字符串值。规定连同请求发送到服务器的数据。
    success(data, textStatus, jqXHR) 可选。请求成功时执行的回调函数。
    dataType

    可选。规定预期的服务器响应的数据类型。
    默认执行智能判断(xml、json、script 或 html)。

    使用 AJAX 的 GET 请求来改变 div 元素的文本:

    [javascript] view plain copy
     
    1. $("input").keyup(function(){  
    2.   txt=$("input").val();  
    3.   $.post("demo_ajax_gethint.asp",{suggest:txt},function(result){  
    4.     $("span").html(result);  
    5.   });  
    6. });  

    实例:
    一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
    示例代码:

    Ajax.aspx:

    [javascript] view plain copy
     
    1. Response.ContentType = "application/json";Response.Write("{result: '" + Request["Name"] + ",你好!(这消息来自服务器)'}");  

    jQuery 代码:

    [javascript] view plain copy
     
    1. $.post("Ajax.aspx", { Action: "post", Name: "lulu" },       
    2.    function (data, textStatus){          
    3.     // data 可以是 xmlDoc, jsonObj, html, text, 等等.    
    4.     //this;  
    5.     // 这个Ajax请求的选项配置信息,请参考jQuery.get()说到的this    
    6.    alert(data.result);          
    7. }, "json");  

    点击提交:
    这里设置了请求的格式为"json":
    $.ajax()这个是jQuery 的底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。

    3、jQuery.ajax()方法

    Ajax事件参数:beforeSend ,success ,complete ,error 。我们可以定义这些事件来很好的处理我们的每一次的Ajax请求。

    [javascript] view plain copy
     
    1. $.ajax({  
    2. url: 'stat.php',  
    3. type: 'POST',  
    4. data:{Name:"keyun"},  
    5. dataType: 'html',  
    6. timeout: 1000,  
    7. error: function(){alert('Error loading PHP document');},  
    8. success: function(result){alert(result);}  
    9. });  

    $.get()与$.post()的区别:

    《计算机网络》对POST和GET方法在HTTP协议中的简单解释:HTTP协议定义了通信的两种报文:请求报文和响应报文。对于请求报文来说,它的通用格式包含三个主要部分:请求行、首部行、实体主体。通常请求行的格式为:方法字段、URL字段、HTTP协议版本字段,其中方法字段就包括GET、POST方法等。
    当方法字段是GET方法时内容主体为空,而是用POST方法时才使用实体主体。
    HTTP客户机通常在用户提交表单时使用POST方法,这时,实体主体中所包含的就是用户在表单中的输入值。当然,GET方法也可以提交表单中的数据,它是通过将用户在表单中的输入值传送到正确的URL来实现的。这就是我们通常所看到的http://ei.hust.edu.cn?username="libis"&age=12。
    可以看出,在表单提交的方式上两者存在很大的不同:
    1.Post方法将表单数据填充到HTTP请求报文中的实体主体部分,使用者是看不到的。而GET方法则是将表单数据直接传送到请求行的URL字段来实现表单数据提交的。这也就决定了使用POST是相对比较安全的,而是用GET方法的安全性就很低。
    除此之外,GET方法和POST方法另一个重要的区别是:
    2.GET方法传送的数据量较小,一般只有2k。而POST方法传送的数据量较大,理论上没有上限。

    $.ajax()需要注意的一些地方:

    1.data主要方式有三种,html拼接的,json数组,form表单经serialize()序列化的;通过dataType指定,不指定智能判断。
    2.$.ajax只提交form以文本方式,如果异步提交包含<file>上传是传过不过去,需要使用jquery.form.js的$.ajaxSubmit

    $.ajax() 实际应用例子

    [javascript] view plain copy
     
      1. //1.$.ajax带json数据的异步请求  
      2. var aj = $.ajax( {    
      3.     url:'productManager_reverseUpdate',// 跳转到 action    
      4.     data:{    
      5.              selRollBack : selRollBack,    
      6.              selOperatorsCode : selOperatorsCode,    
      7.              PROVINCECODE : PROVINCECODE,    
      8.              pass2 : pass2    
      9.     },    
      10.     type:'post',    
      11.     cache:false,    
      12.     dataType:'json',    
      13.     success:function(data) {    
      14.         if(data.msg =="true" ){    
      15.             // view("修改成功!");    
      16.             alert("修改成功!");    
      17.             window.location.reload();    
      18.         }else{    
      19.             view(data.msg);    
      20.         }    
      21.      },    
      22.      error : function() {    
      23.           // view("异常!");    
      24.           alert("异常!");    
      25.      }    
      26. });  
      27.   
      28.   
      29. //2.$.ajax序列化表格内容为字符串的异步请求  
      30. function noTips(){    
      31.     var formParam = $("#form1").serialize();//序列化表格内容为字符串    
      32.     $.ajax({    
      33.         type:'post',        
      34.         url:'Notice_noTipsNotice',    
      35.         data:formParam,    
      36.         cache:false,    
      37.         dataType:'json',    
      38.         success:function(data){    
      39.         }    
      40.     });    
      41. }    
      42.   
      43.   
      44. //3.$.ajax拼接url的异步请求  
      45. var yz=$.ajax({    
      46.      type:'post',    
      47.      url:'validatePwd2_checkPwd2?password2='+password2,    
      48.      data:{},    
      49.      cache:false,    
      50.      dataType:'json',    
      51.      success:function(data){    
      52.           if( data.msg =="false" ) //服务器返回false,就将validatePassword2的值改为pwd2Error,这是异步,需要考虑返回时间    
      53.           {    
      54.                textPassword2.html("<font color='red'>业务密码不正确!</font>");    
      55.                $("#validatePassword2").val("pwd2Error");    
      56.                checkPassword2 = false;    
      57.                return;    
      58.            }    
      59.       },    
      60.       error:function(){}    
      61. });   
      62.   
      63.   
      64. //4.$.ajax拼接data的异步请求  
      65. $.ajax({     
      66.     url:'<%=request.getContextPath()%>/kc/kc_checkMerNameUnique.action',     
      67.     type:'post',     
      68.     data:'merName='+values,     
      69.     async : false, //默认为true 异步     
      70.     error:function(){     
      71.        alert('error');     
      72.     },     
      73.     success:function(data){     
      74.        $("#"+divs).html(data);     
      75.     }  
      76. });  
  • 相关阅读:
    js检测对象中是否存在某个属性
    ES6 笔记
    DataSet 用法
    CommandBehavior.CloseConnection有何作用
    SqlDataReader
    Listview.Finditem()函数用法
    Instr()函数用法
    StringBuilder与StringBuffer的区别
    [DllImport("kernel32.dll")]使用
    extern用法
  • 原文地址:https://www.cnblogs.com/ziyoublog/p/9025197.html
Copyright © 2011-2022 走看看