乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      jQuery的ajax詳解

       醉人說夢(mèng) 2019-05-13

      很多朋友都喜歡用JQ 而ajax更是JQ里必不可少的 下面為大家詳細(xì)介紹一下JQ的ajax

      首先 什么是ajax:

      AJAX = 異步 JavaScript 和 XML(Asynchronous JavaScript and XML)。

      簡(jiǎn)短地說,在不重載整個(gè)網(wǎng)頁(yè)的情況下,AJAX 通過后臺(tái)加載數(shù)據(jù),并在網(wǎng)頁(yè)上進(jìn)行顯示

      jQuery 提供多個(gè)與 AJAX 有關(guān)的方法。

      通過 jQuery AJAX 方法,您能夠使用 HTTP Get 和 HTTP Post 從遠(yuǎn)程服務(wù)器上請(qǐng)求文本、HTML、XML 或 JSON - 同時(shí)您能夠把這些外部數(shù)據(jù)直接載入網(wǎng)頁(yè)的被選元素中。

      第一種

      $("#id").load()

      這算是比較常見的一種JQ的ajax的寫法  通過ID找到dom節(jié)點(diǎn) 然后等頁(yè)面加載完畢之后通過aja請(qǐng)求數(shù)據(jù)

      load() 方法通過 AJAX 請(qǐng)求從服務(wù)器加載數(shù)據(jù),并把返回的數(shù)據(jù)放置到指定的元素中

      load(url,data,function(response,status,xhr))

      一共有三個(gè)參數(shù)

      url:規(guī)定要將請(qǐng)求發(fā)送到哪個(gè) URL

      data:可選。規(guī)定連同請(qǐng)求發(fā)送到服務(wù)器的數(shù)據(jù),通常情況下如果只是簡(jiǎn)單的請(qǐng)求數(shù)據(jù)這個(gè)參數(shù)可以忽略

      function(response,status,xhr):可選。規(guī)定當(dāng)請(qǐng)求完成時(shí)運(yùn)行的函數(shù)。請(qǐng)求完成后將要實(shí)現(xiàn)的函數(shù)。

      雖然是可選 但是通常情況下都會(huì)寫的,因?yàn)檎?qǐng)求數(shù)據(jù)回來之后總是要操作數(shù)據(jù)做點(diǎn)什么對(duì)吧。

      eg:

      $("button").click(function(){
        $("div").load('demo_ajax_load.txt');
      });

      第二種

      $.get();

      相信對(duì)ajax稍微有點(diǎn)了解的朋友都知道get和post 那么同樣的 JQ里面也少不了他們兩個(gè)

      使用get方法需要先知道你所要請(qǐng)求的數(shù)據(jù)是json類型還是JSONP類型

      如果是json:

      $.get("http://datainfo./shopdata/getclass.php",function(data){
                  console.log(data)        })

      JSONP:

      復(fù)制代碼
      $.get("http://datainfo./shopdata/getuser.php?userID=f66",function(data){
                  console.log(data)
              },"JSONP");
      $.get("http://datainfo./shopdata/getCar.php",{userID:"f66"},function(data){
                  console.log(data)
              },"JSONP")
      復(fù)制代碼

      對(duì)于JSONP這兩種寫法的區(qū)別就在于傳遞參數(shù)的方式,第一種是直接在后面加?然后寫數(shù)據(jù),第二種是逗號(hào)隔開之后在大括號(hào)里寫

      第三種

      $.post(URL,data,callback);

      必需的 URL 參數(shù)規(guī)定希望請(qǐng)求的 URL。

      可選的 data 參數(shù)規(guī)定連同請(qǐng)求發(fā)送的數(shù)據(jù)。

      可選的 callback 參數(shù)是請(qǐng)求成功后所執(zhí)行的函數(shù)名

      和get方法差不多  post也有不同的寫法

      $.post("http://datainfo./shopdata/getuser.php?userID=f66",function(data){
                  console.log(data)        },"JSONP");        $.post("http://datainfo./shopdata/getCar.php",{userID:"f66"},function(data){            console.log(data)        },"JSONP")

      具體區(qū)別和上面get方法一樣

      下面給大家說說get和post的區(qū)別

      Get:
      用get方式可傳送簡(jiǎn)單數(shù)據(jù),但大小一般限制在1KB下,數(shù)據(jù)追加到url中發(fā)送(http的header傳送),也就是說,瀏覽器將各個(gè)表單字段元素及其數(shù)據(jù)按照URL參數(shù)的格式附加在請(qǐng)求行中的資源路徑后面。另外最重要的一點(diǎn)是,它會(huì)被客戶端的瀏覽器緩存起來,那么,別人就可以從瀏覽器的歷史記錄中,讀取到此客戶的數(shù)據(jù),比如賬號(hào)和密碼等。因此,在某些情況下,get方法會(huì)帶來嚴(yán)重的安全性問題。

      Post:
      當(dāng)使用POST方式時(shí),瀏覽器把各表單字段元素及其數(shù)據(jù)作為HTTP消息的實(shí)體內(nèi)容發(fā)送給Web服務(wù)器,而不是作為URL地址的參數(shù)進(jìn)行傳遞,使用POST方式傳遞的數(shù)據(jù)量要比使用GET方式傳送的數(shù)據(jù)量大的多。

      總之,GET方式傳送數(shù)據(jù)量小,處理效率高,安全性低,會(huì)被緩存,而POST反之。

      第四種

      $.ajax();

      這種方法估計(jì)是大家最常用到的,因?yàn)樵诖蠖鄶?shù)編譯軟件中例如Hbuilder,直接會(huì)出現(xiàn)類似的提示

      $.ajax({
            type:"get",
            url:"",
            async:true
        });

      而根據(jù)這個(gè)大家也很容易猜到這些參數(shù)的意義,需要注意的是async 這個(gè)是用來判斷同步異步的,通常情況下大家可以不用理會(huì),直接刪掉就好,這時(shí)候可能有朋友會(huì)問了,成功之后的函數(shù)寫到哪里,別著急,看下面

      復(fù)制代碼
      復(fù)制代碼
      $.ajax({
            type:"get",
            url:"",
            function(data){
                  console.log(data)      
              }
        });
      復(fù)制代碼
      復(fù)制代碼

      只要這樣就可以在這個(gè)function函數(shù)內(nèi)對(duì)請(qǐng)求回來的數(shù)據(jù)進(jìn)行操作了。

      第五種

      $.getJSON();

      這種方法可能大家不是很常見,但是不得不說這種方法是最簡(jiǎn)潔也可以說是最方便的一種方法

      復(fù)制代碼
      $.getJSON("http://datainfo./shopdata/getCar.php?userID=f66&callback=?",function(data){
                 console.log(data)        })
      
          
      $.getJSON("pro.json",function(data){            console.log(data)            sortPrice(data);            data.sort(function(a,b){               return a.price - b.price;            })           console.log(data)                    })
      復(fù)制代碼

      如果大家是從上面一直看到這里的相信很容易理解這兩種寫法是做什么的  沒錯(cuò) 第一種是為了請(qǐng)求JSONP第二種是常規(guī)json數(shù)據(jù)

      可能有朋友就不理解了,到底什么是JSONP什么是JSON,這個(gè)問題如果討論起來那就又是另一個(gè)話題了 在這里大家只需要知道你所要請(qǐng)求的數(shù)據(jù)

      是什么類型的就好,通常在接口里都會(huì)給你說明的,而在ajax里怎么用也比較好區(qū)分,就是JSONP會(huì)加?callback=而json不需要,所以當(dāng)你看見?的時(shí)候

      那么沒錯(cuò)了 他就是JSONP

      第六種

      $.getScript();

      這種方法就厲害了,可能前五種方法大家只能請(qǐng)求數(shù)據(jù),那么我問大家,當(dāng)大家想引用一個(gè)js文件的時(shí)候會(huì)怎么做呢?

      是不是直接引用script標(biāo)簽引入,這里這種方法可以避免使用標(biāo)簽

      復(fù)制代碼
      復(fù)制代碼
      $("#btn").click(function(){
                  $.getScript("test.js",function(){
                      setTimeout(function(){
                          alert(2)
                      },2000)
                  })
              });
      復(fù)制代碼
      復(fù)制代碼

      這樣就可以直接引用test.js了。

      然后再給大家說一說使用ajax中常見的一些問題及解決方法

      使用Post方式需注意:
      1.設(shè)置header的Context-Type為application/x-www-form-urlencode確保服務(wù)器知道實(shí)體中有參數(shù)變量. 通常使用XmlHttpRequest對(duì)象的SetRequestHeader("Context-Type","application/x-www- form-urlencoded;")。例:

      xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      2.參數(shù)是名/值一一對(duì)應(yīng)的鍵值對(duì),每對(duì)值用&號(hào)隔開.如 var name=abc&sex=man&age=18,注意var name=update.php?

      abc&sex=man&age=18以及var name=?abc&sex=man&age=18的寫法都是錯(cuò)誤的;
      3.參數(shù)在Send(參數(shù))方法中發(fā)送,例: xmlHttp.send(name); 如果是get方式,直接 xmlHttp.send(null);

      4.服務(wù)器端請(qǐng)求參數(shù)區(qū)分Get與Post。如果是get方式則$username = $_GET["username"]; 如果是post方式,則$username = $_POST["username"];

      AJAX亂碼問題

      產(chǎn)生亂碼的原因:
      1、xtmlhttp 返回的數(shù)據(jù)默認(rèn)的字符編碼是utf-8,如果客戶端頁(yè)面是gb2312或者其它編碼數(shù)據(jù)就會(huì)產(chǎn)生亂碼
      2、post方法提交數(shù)據(jù)默認(rèn)的字符編碼是utf-8,如果服務(wù)器端是gb2312或其他編碼數(shù)據(jù)就會(huì)產(chǎn)生亂碼

      解決辦法有:
      1、若客戶端是gb2312編碼,則在服務(wù)器指定輸出流編碼
      2、服務(wù)器端和客戶端都使用utf-8編碼

      gb2312:header('Content-Type:text/html;charset=GB2312');

      utf8:header('Content-Type:text/html;charset=utf-8');

       

      原文連接

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多