Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产视频在线观看免费,国产精品一区二区在线观看,欧美人与禽交3d动漫

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          $.ajax()常用方法詳解(推薦)

          JAX 是一種與服務(wù)器交換數(shù)據(jù)的技術(shù),可以在補充在整個頁面的情況下更新網(wǎng)頁的一部分。接下來通過本文給大家介紹ajax一些常用方法,大家有需要可以一起學習。

          1.url:

          要求為String類型的參數(shù),(默認為當前頁地址)發(fā)送請求的地址。

          2.type:

          要求為String類型的參數(shù),請求方式(post或get)默認為get。注意其他http請求方法,例如put和delete也可以使用,但僅部分瀏覽器支持。

          3.timeout:

          要求為Number類型的參數(shù),設(shè)置請求超時時間(毫秒)。此設(shè)置將覆蓋$.ajaxSetup()方法的全局設(shè)置。

          4.async:

          要求為Boolean類型的參數(shù),默認設(shè)置為true,所有請求均為異步請求。如果需要發(fā)送同步請求,請將此選項設(shè)置為false。注意,同步請求將鎖住瀏覽器,用戶其他操作必須等待請求完成才可以執(zhí)行。


          5.cache:

          要求為Boolean類型的參數(shù),默認為true(當dataType為script時,默認為false),設(shè)置為false將不會從瀏覽器緩存中加載請求信息。

          6.data:

          要求為Object或String類型的參數(shù),發(fā)送到服務(wù)器的數(shù)據(jù)。如果已經(jīng)不是字符串,將自動轉(zhuǎn)換為字符串格式。get請求中將附加在url后。防止這種自動轉(zhuǎn)換,可以查看 processData選項。對象必須為key/value格式,例如{foo1:"bar1",foo2:"bar2"}轉(zhuǎn)換為&foo1=bar1&foo2=bar2。如果是數(shù)組,JQuery將自動為不同值對應(yīng)同一個名稱。例如{foo:["bar1","bar2"]}轉(zhuǎn)換為&foo=bar1&foo=bar2。

          7.dataType:

          要求為String類型的參數(shù),預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,JQuery將自動根據(jù)http包mime信息返回responseXML或responseText,并作為回調(diào)函數(shù)參數(shù)傳遞。可用的類型如下:

          xml:返回XML文檔,可用JQuery處理。

          html:返回純文本HTML信息;包含的script標簽會在插入DOM時執(zhí)行。

          script:返回純文本JavaScript代碼。不會自動緩存結(jié)果。除非設(shè)置了cache參數(shù)。注意在遠程請求時(不在同一個域下),所有post請求都將轉(zhuǎn)為get請求。

          json:返回JSON數(shù)據(jù)。

          jsonp:JSONP格式。使用SONP形式調(diào)用函數(shù)時,例如myurl?callback=?,JQuery將自動替換后一個“?”為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。

          text:返回純文本字符串。

          8.beforeSend:

          要求為Function類型的參數(shù),發(fā)送請求前可以修改XMLHttpRequest對象的函數(shù),例如添加自定義HTTP頭。在beforeSend中如果返回false可以取消本次ajax請求。XMLHttpRequest對象是惟一的參數(shù)。

          function(XMLHttpRequest){

          this; //調(diào)用本次ajax請求時傳遞的options參數(shù)

          }

          9.complete:

          要求為Function類型的參數(shù),請求完成后調(diào)用的回調(diào)函數(shù)(請求成功或失敗時均調(diào)用)。參數(shù):XMLHttpRequest對象和一個描述成功請求類型的字符串。

          function(XMLHttpRequest, textStatus){

          this; //調(diào)用本次ajax請求時傳遞的options參數(shù)

          }

          10.success:

          要求為Function類型的參數(shù),請求成功后調(diào)用的回調(diào)函數(shù),有兩個參數(shù)。

          (1)由服務(wù)器返回,并根據(jù)dataType參數(shù)進行處理后的數(shù)據(jù)。

          (2)描述狀態(tài)的字符串。

          function(data, textStatus){

          //data可能是xmlDoc、jsonObj、html、text等等

          this; //調(diào)用本次ajax請求時傳遞的options參數(shù)

          }

          11.error:

          要求為Function類型的參數(shù),請求失敗時被調(diào)用的函數(shù)。該函數(shù)有3個參數(shù),即XMLHttpRequest對象、錯誤信息、捕獲的錯誤對象(可選)。ajax事件函數(shù)如下:

          function(XMLHttpRequest, textStatus, errorThrown){

          //通常情況下textStatus和errorThrown只有其中一個包含信息

          this; //調(diào)用本次ajax請求時傳遞的options參數(shù)

          }

          12.contentType:

          要求為String類型的參數(shù),當發(fā)送信息至服務(wù)器時,內(nèi)容編碼類型默認為"application/x-www-form-urlencoded"。該默認值適合大多數(shù)應(yīng)用場合。

          13.dataFilter:

          要求為Function類型的參數(shù),給Ajax返回的原始數(shù)據(jù)進行預(yù)處理的函數(shù)。提供data和type兩個參數(shù)。data是Ajax返回的原始數(shù)據(jù),type是調(diào)用jQuery.ajax時提供的dataType參數(shù)。函數(shù)返回的值將由jQuery進一步處理。

          function(data, type){

          //返回處理后的數(shù)據(jù)

          return data;

          }

          14.dataFilter:

          要求為Function類型的參數(shù),給Ajax返回的原始數(shù)據(jù)進行預(yù)處理的函數(shù)。提供data和type兩個參數(shù)。data是Ajax返回的原始數(shù)據(jù),type是調(diào)用jQuery.ajax時提供的dataType參數(shù)。函數(shù)返回的值將由jQuery進一步處理。

          function(data, type){

          //返回處理后的數(shù)據(jù)

          return data;

          }

          15.global:

          要求為Boolean類型的參數(shù),默認為true。表示是否觸發(fā)全局ajax事件。設(shè)置為false將不會觸發(fā)全局ajax事件,ajaxStart或ajaxStop可用于控制各種ajax事件。

          16.ifModified:

          要求為Boolean類型的參數(shù),默認為false。僅在服務(wù)器數(shù)據(jù)改變時獲取新數(shù)據(jù)。服務(wù)器數(shù)據(jù)改變判斷的依據(jù)是Last-Modified頭信息。默認值是false,即忽略頭信息。

          17.jsonp:

          要求為String類型的參數(shù),在一個jsonp請求中重寫回調(diào)函數(shù)的名字。該值用來替代在"callback=?"這種GET或POST請求中URL參數(shù)里的"callback"部分,例如{jsonp:'onJsonPLoad'}會導(dǎo)致將"onJsonPLoad=?"傳給服務(wù)器。

          18.username:

          要求為String類型的參數(shù),用于響應(yīng)HTTP訪問認證請求的用戶名。

          19.password:

          要求為String類型的參數(shù),用于響應(yīng)HTTP訪問認證請求的密碼。

          20.processData:

          要求為Boolean類型的參數(shù),默認為true。默認情況下,發(fā)送的數(shù)據(jù)將被轉(zhuǎn)換為對象(從技術(shù)角度來講并非字符串)以配合默認內(nèi)容類型"application/x-www-form-urlencoded"。如果要發(fā)送DOM樹信息或者其他不希望轉(zhuǎn)換的信息,請設(shè)置為false。

          21.scriptCharset:

          要求為String類型的參數(shù),只有當請求時dataType為"jsonp"或者"script",并且type是GET時才會用于強制修改字符集(charset)。通常在本地和遠程的內(nèi)容編碼不同時使用。

          案例代碼:

          $(function(){

          $('#send').click(function(){

          $.ajax({

          type: "GET",

          url: "test.json",

          data: {username:$("#username").val(), content:$("#content").val()},

          dataType: "json",

          success: function(data){

          $('#resText').empty(); //清空resText里面的所有內(nèi)容

          var html = '';

          $.each(data, function(commentIndex, comment){

          html += '<div class="comment"><h6>' + comment['username']

          + ':</h6><p class="para"' + comment['content']

          + '</p></div>';

          });

          由于在工作中需要使用AJAX請求其他域名下的請求,但是會出現(xiàn)拒絕訪問的情況,這是因為基于安全的考慮,AJAX只能訪問本地的資源,而不能跨域訪問。

          比如說你的網(wǎng)站域名是aaa.com,想要通過AJAX請求bbb.com域名中的內(nèi)容,瀏覽器就會認為是不安全的,所以拒絕訪問。

          會出現(xiàn)跨域問題的幾種情況:

          后臺在百度上尋找解決方案解決了這個問題,一共總結(jié)出三種方案:代理、JSONP、XHR2(XMLHttpRequestLevel2)。

          第一種方法代理:這種方式是通過后臺(ASP、PHP、JAVA、ASP.NET)獲取其他域名下的內(nèi)容,然后再把獲得內(nèi)容返回到前端,這樣因為在同一個域名下,所以就不會出現(xiàn)跨域的問題。

          實現(xiàn)代碼:創(chuàng)建一個AJAX請求(頁面地址為:http://localhost/ajax/proxy.html)

              var request = null;
              if(window.XMLHttpRequest){
                  request = new XMLHttpRequest;
              }else{
                  request = new ActiveXObject("Microsoft.XMLHttp");
              }
              request.onreadystatechange = function{
                  console.log(this.readyState);
                  if(this.readyState===4 && this.status===200){
           var resultObj = eval("("+this.responseText+")");    //將返回的文本數(shù)據(jù)轉(zhuǎn)換JSON對象
           document.getElementById("box").innerHTML = resultObj.name+":"+resultObj.sex;    //將返回的內(nèi)容顯示在頁面中
                  }
              }
              request.open("POST","proxy.php",true);
              request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
              request.send("name=呂銘印&sex=男");
          1234567891011121314151617復(fù)制代碼類型:[javascript]

          創(chuàng)建AJAX請求。

          proxy.php代碼

          header("Content-type:text/html;charset=utf-8");
          $url = "http://localhost:63342/ajax/proxy.js";
          $contents = file_get_contents($url);
          echo $contents;1234復(fù)制代碼類型:[javascript]

          使用php代碼獲取localhost:63342下的proxy.js文件。

          proxy.js代碼

          proxy.html運行結(jié)果

          至此,使用代理實現(xiàn)了訪問不同域之間的文件。

          首先在proxy.html使用AJAX訪問后臺的proxy.php文件,然后proxy.php接收到請求之后去訪問localhost:63342中的proxy.js文件,獲取到proxy.js的內(nèi)容后,將內(nèi)容返回到前端頁面,這就實現(xiàn)了跨域的功能。

          如果要訪問多個跨域文件,可以以參數(shù)的形式告訴后臺proxy.php文件要訪問的文件的地址。

          第二種方法JSONP(只支持GET請求):后來人們發(fā)現(xiàn),在調(diào)用Js文件的時候不受跨域的影響,這樣就衍生了第二種方案。

          就是在遠程服務(wù)器端把數(shù)據(jù)裝入js文件中,供客戶端調(diào)用和進一步處理。

          jsonp.html
          
              var url = "http://localhost:63342/ajax/jsonp.php?name=呂銘印&sex=男&callbackname=jsonp_callback"; //訪問localhost:63342下的jsonp.php
              var scriptTag = document.createElement("script");   //創(chuàng)建一個script標簽
              scriptTag.setAttribute("src",url);  //設(shè)置script的src屬性
              document.body.appendChild(scriptTag);   //將script標簽添加到body中
              //回調(diào)函數(shù)
              var jsonp_callback = function(resultObj){
                  document.getElementById("box").innerHTML = resultObj.name+":"+resultObj.sex;
              }
          jsonp.php
          
          $name = $_GET["name"];
              $sex = $_GET["sex"];
              $callbackname = $_GET["callbackname"];    //回調(diào)函數(shù)名稱
              echo "$callbackname({name:'$name',sex:'$sex'})";12345678910111213141516復(fù)制代碼類型:[javascript]

          jsonp.html運行結(jié)果:

          實現(xiàn)原理:由于使用script標簽調(diào)用遠程js文件沒有不受跨域的影響,所以可以通過創(chuàng)建一個script標簽,通過src屬性來訪問遠程文件。

          其實這并不屬于AJAX,但是可以實現(xiàn)類似AJAX的功能。

          第三種方法XMLHttpRequestLevel2:HTML5提供的XMLHttpRequestLevel2已經(jīng)實現(xiàn)了跨域訪問以及其他的一些新功能

          這需要在遠程服務(wù)器端添加如下代碼

          這樣在客戶端使用常規(guī)的AJAX代碼即可。

          jax提交含有html數(shù)據(jù)時的處理方法,當請求參數(shù)中含有html便簽內(nèi)容,系統(tǒng)無法進行提交,可以在前臺加密,后臺解密即可。具體操作如下:

          前臺(js)

          function ajax_encode(str)
          {
              str = str.replace(/%/g,"{@bai@}");
              str = str.replace(/ /g,"{@kong@}");
              str = str.replace(/</g,"{@zuojian@}");
              str = str.replace(/>/g,"{@youjian@}");
              str = str.replace(/&/g,"{@and@}");
              str = str.replace(/\"/g,"{@shuang@}");
              str = str.replace(/\'/g,"{@dan@}");
              str = str.replace(/\t/g,"{@tab@}");
              str = str.replace(/\+/g,"{@jia@}");
              return str;
          }12345678910111213復(fù)制代碼類型:[html]

          后臺(java)

          public static String ajax_decode(String str, Boolean bsql)
            {
                str = str.replace("{@bai@}", "%");
                str = str.replace("{@dan@}", "'");
                str = str.replace("{@shuang@}", "\"");
                str = str.replace("{@kong@}", " ");
                str = str.replace("{@zuojian@}", "<");
                str = str.replace("{@youjian@}", ">");
                str = str.replace("{@and@}", "&");
                str = str.replace("{@tab@}", "\t");
                str = str.replace("{@jia@}", "+");
                if(bsql) str = str.replace("'", "''");
                return str;
            }1234567891011121314復(fù)制代碼類型:[html]

          這樣請求可以正常發(fā)送!

          「鏈接」


          主站蜘蛛池模板: 久久久人妻精品无码一区| 成人精品视频一区二区三区尤物| 国产suv精品一区二区6| 中文字幕在线观看一区| 一区二区传媒有限公司| jazzjazz国产精品一区二区| 国产一区二区在线| 精品国产一区二区三区不卡 | 国产一区二区在线观看| 国产香蕉一区二区三区在线视频| 久久国产免费一区| 国产91精品一区二区麻豆亚洲| 无码中文人妻在线一区二区三区| 嫩B人妻精品一区二区三区| 国产成人精品亚洲一区| 成人免费一区二区三区在线观看| 亚洲福利一区二区精品秒拍| 中文字幕不卡一区| A国产一区二区免费入口| 精彩视频一区二区| 亚洲AV噜噜一区二区三区| 少妇精品久久久一区二区三区 | 亚洲中文字幕一区精品自拍| 激情内射亚洲一区二区三区| 国产精品无圣光一区二区 | 在线视频国产一区| 精品国产福利在线观看一区 | 日本免费一区二区在线观看| 无码人妻精品一区二区三区东京热 | 日本一区午夜艳熟免费| 亚洲日本一区二区一本一道| 日本夜爽爽一区二区三区| 国产一区中文字幕在线观看| 精品女同一区二区| 国产精久久一区二区三区| 国产精品乱码一区二区三区| 精品日韩在线视频一区二区三区| 无码人妻久久一区二区三区蜜桃 | 无码精品人妻一区二区三区免费看 | 日韩美女在线观看一区| 日韩一区二区三区免费体验|