<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 1、編碼字符 為什么要編碼: ![](https://img.kancloud.cn/48/d6/48d6d3e81e60dd1fb236924fd1a9b31c_679x454.png) 解決的辦法就是對用戶輸入的內容進行編碼。 ``` encodeURI() --- 不能對“:/=&”進行編碼,能對漢字進行編碼 encodeURIComponent() --- 能對“:/=&”進行編碼,也能對漢字進行編碼 ``` ![](https://img.kancloud.cn/43/88/43883bce032b1ecfdfcc3a44d6b19218_1072x501.png) 一般情況下,JS編碼后發送到服務器,PHP會自動解碼,如果沒有自動解碼,用PHP的函數urldecode來解碼。 # 2、緩存處理 什么是Ajax緩存原理? Ajax在發送的數據成功后,會把請求的URL和返回的響應結果保存在瀏覽器緩存內,當下一次調用Ajax發送相同的請求時,它會直接從緩存中把數據取出來,這是為了提高頁面的響應速度和用戶體驗。當前這兩次請求URL完全相同,包括參數。這個時候,瀏覽器就不會與服務器交互。 兩次請求的地址完全一致(包括參數),那么IE就會從緩存中取服務器上一次返回的結果。而不會從新向服務器發送請求。 測試方法: 先輸入一個不存在的用戶名,比如bbb,失去焦點,發送一次Ajax請求,然后不刷新頁面。打開php文件,向數組中加入用戶名bbb。回到瀏覽器,還不能刷新,再次失去焦點。如下圖 ![](https://img.kancloud.cn/a0/58/a058c57484bf0e5fc8be2c4719c8308e_978x502.png) > 如何解決IE緩存的問題: > 1、在ajax發送請求前加上 xhr.setRequestHeader("If-Modified-Since","0"); //實測可用 > 2、在服務器端加 > header("Cache-Control:no-cache"); > header("Pragma:no-cache"); > header("Expires:-1"); > 加入三個header,目的是讓所有的瀏覽器都不緩存。 > 3、在 Ajax 的 URL 參數后加上 "?fresh=" + Math.random(); //當然這里參數 fresh 可以任意取了 > 4、第種方法和第3種類似,在 URL 參數后加上 "?timestamp=" + new Date().getTime(); > ![](https://img.kancloud.cn/99/ab/99ab1f15fa4f7d7bf92cb5a6e0d4b12a_1001x499.png) > 5、用POST替代GET:不推薦 > 以上幾種方式,比較推薦第3和第4中方法。 # 3、get和post請求 使用POST請求: xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); ![](https://img.kancloud.cn/09/54/0954e66817bba98c43b80f4c49b24818_1098x332.png) 服務器接收數據用$_POST. ![](https://img.kancloud.cn/4a/96/4a96aa211255570f20bb0799dd243793_844x359.png) > ajax中的get和post的一些說明: > ①、用post請求,不會產生緩存。 > ②、用post請求的時候,能不能也用get,即post和get請求同時使用。答案是能,只不過get請求的參數用$_GET獲取,post請求的參數用$_POST獲取。 > ③、用$_REQUEST獲取get和post方式提交的參數,如果參數名相同,獲取的是誰?獲取的是post的內容 # 4、同步、異步 同步請求,在同一個時間點上,只能有一個進程;其他進程只能等待。 異步請求,在同一個時間點上,可以同時進行多個進程。 open方法的第三個參數表示同步或者是異步請求。默認值true表示異步請求,false表示同步請求。 ![](https://img.kancloud.cn/f5/57/f557e126706a34767af5a06c6178b85e_763x402.png) # 5、請求的url如果出錯怎么辦 ![](https://img.kancloud.cn/43/20/43209914c0825d99cba6ba6e2cf0eea7_711x337.png) 以后寫Ajax的時候,不但要判斷readyState的值是否為4,還要判斷http狀態碼status屬性的值是否是200.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看