jQuery中$.get()、$.post()和$.ajax()

來源:互聯網
上載者:User

jQuery.get()方法:

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

該函數是簡寫的 Ajax 函數,等價於:

$.ajax({  url: url,  data: data,  success: success,  dataType: dataType});

根據響應的不同的 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 元素的文本:

$("button").click(function(){  $.get("demo_ajax_load.txt", function(result){    $("div").html(result);  });});

jQuery.post()方法:

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

該函數是簡寫的 Ajax 函數,等價於:

$.ajax({  type: 'POST',  url: url,  data: data,  success: success,  dataType: dataType});

根據響應的不同的 MIME 類型,傳遞給 success 回呼函數的返回資料也有所不同,這些資料可以是 XML 根項目、文本字串、JavaScript 檔案或者 JSON 對象。也可向 success 回呼函數傳遞響應的文本狀態。

參數 描述
url 必需。規定把請求發送到哪個 URL。
data 可選。映射或字串值。規定連同請求發送到伺服器的資料。
success(data, textStatus, jqXHR) 可選。請求成功時執行的回呼函數。
dataType

可選。規定預期的伺服器響應的資料類型。
預設執行智能判斷(xml、json、script 或 html)。

使用 AJAX 的 GET 請求來改變 div 元素的文本:

$("input").keyup(function(){  txt=$("input").val();  $.post("demo_ajax_gethint.asp",{suggest:txt},function(result){    $("span").html(result);  });});

執行個體:
一個簡單的 POST 請求功能以取代複雜 $.ajax 。請求成功時可調用回呼函數。如果需要在出錯時執行函數,請使用 $.ajax。
範例程式碼:

Ajax.aspx:

Response.ContentType = "application/json";Response.Write("{result: '" + Request["Name"] + ",你好。(這訊息來自伺服器)'}");

jQuery 代碼:

$.post("Ajax.aspx", { Action: "post", Name: "lulu" },        function (data, textStatus){            // data 可以是 xmlDoc, jsonObj, html, text, 等等.      //this;    // 這個Ajax請求的選項配置資訊,請參考jQuery.get()說到的this     alert(data.result);        }, "json");

點擊提交:
這裡設定了請求的格式為"json":
$.ajax()這個是jQuery 的底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。
這裡有幾個Ajax事件參數:beforeSend ,success ,complete ,error 。我們可以定義這些事件來很好的處理我們的每一次的Ajax請求。

$.ajax({url: 'stat.php',type: 'POST',data:{Name:"keyun"},dataType: 'html',timeout: 1000,error: function(){alert('Error loading PHP document');},success: function(result){alert(result);}});

$.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() 實際應用例子

//1.$.ajax帶json資料的非同步請求var aj = $.ajax( {      url:'productManager_reverseUpdate',// 跳轉到 action      data:{               selRollBack : selRollBack,               selOperatorsCode : selOperatorsCode,               PROVINCECODE : PROVINCECODE,               pass2 : pass2      },      type:'post',      cache:false,      dataType:'json',      success:function(data) {          if(data.msg =="true" ){              // view("修改成功。");              alert("修改成功。");              window.location.reload();          }else{              view(data.msg);          }       },       error : function() {            // view("異常。");            alert("異常。");       }  });//2.$.ajax序列化表格內容為字串的非同步請求function noTips(){      var formParam = $("#form1").serialize();//序列化表格內容為字串      $.ajax({          type:'post',              url:'Notice_noTipsNotice',          data:formParam,          cache:false,          dataType:'json',          success:function(data){          }      });  }  //3.$.ajax拼接url的非同步請求var yz=$.ajax({       type:'post',       url:'validatePwd2_checkPwd2?password2='+password2,       data:{},       cache:false,       dataType:'json',       success:function(data){            if( data.msg =="false" ) //伺服器返回false,就將validatePassword2的值改為pwd2Error,這是非同步,需要考慮返回時間            {                 textPassword2.html("<font color='red'>業務密碼不正確。</font>");                 $("#validatePassword2").val("pwd2Error");                 checkPassword2 = false;                 return;             }        },        error:function(){}  }); //4.$.ajax拼接data的非同步請求$.ajax({       url:'<%=request.getContextPath()%>/kc/kc_checkMerNameUnique.action',       type:'post',       data:'merName='+values,       async : false, //預設為true 非同步       error:function(){          alert('error');       },       success:function(data){          $("#"+divs).html(data);       }});





 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.