Ajax相關基礎知識總結

URL:統一資源定位符javascript

網絡的七層協議:網卡 驅動  網絡層(ip)  傳輸層(tcp udp) 會話層( )  應用層(http、)
restful表徵狀態轉移(一種表徵架構)
CURD 增刪改查   
post改  get查  put增  delete刪
 
head沒有響應主體
get系:get  head delete 沒有請求主體
 
get系和post系區別
get系沒有請求主體
get系會被緩存
get繫有大小限制,最大不能超過8k,可是通常狀況超過4k就用post了(由於get沒有主體,數據都是拼接到url後面,由於瀏覽器對url有大小限制) post都放在了請求主體裏因此沒有大小限制
發送的數據,get系是明文發送,post系會把data放到請求主體裏,沒法看見
 

GET 仍是 POST?

與 POST 相比,GET 更簡單也更快,而且在大部分狀況下都能用。css

然而,在如下狀況中,請使用 POST 請求:html

  • 沒法使用緩存文件(更新服務器上的文件或數據庫)
  • 向服務器發送大量數據(POST 沒有數據量限制)
  • 發送包含未知字符的用戶輸入時,POST 比 GET 更穩定也更可靠
 
 
 
socket  管即時通信的
經過http創建鏈接   http  connection  響應碼 101
經過tcp進行交互
 
 
delete  put 返回碼是202
http status code 狀態碼
 
200 成功 服務器端和客戶端都成功
202 接受
204 執行成功 可是沒有數據
 
 
301  永久轉移   
302  臨時轉移  臨時重定向
負載均衡  集羣  多臺服務器間的跳轉
303永久重定向 、307 臨時重定向
304  走服務器緩存  not modified
 
響應首部
     last-modified 最後一次修改的時間  gmt標準時      瀏覽器先找last-modified,不存在就會找etag
    atag 文件修改一次 時間就變一次  經過sha1算法 散列值   
 
請求頭部
if-modified-since   GMT時間
if-none-match   一串經過檢驗內容進行sha(1|2)算法的字符串
 
 
cache-control   second 緩存的是秒數
expires  gmt data 緩存到何時  
 
 
400 參數錯誤 bad request
401 未認證 not authoriticated
403 禁止訪問  沒有權限  forbidden
404  未找到  not found
417 資源過大  
 
500 服務器內部錯誤  internal server error

502 Bad Gateway是指錯誤網關;無效網關;在互聯網中表示一種網絡錯誤。表如今WEB瀏覽器中給出的頁面反饋。前端

503 併發過高 (同時處理的太多) 
 
 
MIME type   告訴瀏覽器以什麼格式處理數據  格式 xxx/xxx
text/html
text/css
text/javaScript
img/png
img/jpg
img/gif
application/json
application/octet-stream
 
 
url格式
http  端口80
https  端口443
ftp  文件傳輸協議
smtp  傳輸郵件的
telnet
 
                        帳號 密碼              域名(主機名)  端口         路徑
scheme://username:password    @hostname:     port/     path?querystring#hash
 
http  https   ftp  協議
 
 
文件上傳的mime-type是multi-part/form-data
傳二進制用 application/octet-stream
 
ArrayBuffer  透明的
Blob  不透明的
 
 
1.1和2.0的主要區別?
(1)多路複用
(2)首部壓縮
(3)服務器推送
 
 
console.time('a');
for(var i=0;i<1000;i++){};
console.timeEnd('a');
console.tab([{name:'asde',age:12},{name:'asde',age:12},{name:'asde',age:12}])
console.dir();輸出某個對象的詳情
 
 
 
 
 
 
 使用jQuery
        $.ajax({
            url: "test.txt",
            type: "get",
            dataType: "json",//text
            async: true,
            success: function (data) {
                //data就是咱們請求的結果
                console.log(data);
            },
            error: function () {
    
            }
        });
 
        $.ajax({
            url: "test.txt",
            type: "post",
            data: {
                name: "12"
            },
            dataType: "json",
            success: function (data) {
                //data就是咱們請求的結果
                console.log(data);
            }
        });
 
    使用原生的JS
          var createXHR = (function () {
            if ("XMLHttpRequest" in window) {     //XMLHttpRequest 對象用於和服務器交換數據。全部現代瀏覽器均支持 XMLHttpRequest 對象(IE5 和 IE6 使用 ActiveXObject)。
                return function () {
                    return new XMLHttpRequest();
                }
            }
            if (new ActiveXObject("Microsoft.XMLHTTP")) {
                return function () {
                    return new ActiveXObject("Microsoft.XMLHTTP");
                }
            }
            if (new ActiveXObject("Msxml2.XMLHTTP")) {
                return function () {
                    return new ActiveXObject("Msxml2.XMLHTTP");
                }
            }
            if (new ActiveXObject("Msxml3.XMLHTTP")) {
                return function () {
                    return new ActiveXObject("Msxml3.XMLHTTP");
                }
            }
        })();
        var xhr = createXHR();
        xhr.open("get", "test.txt");     
//如需將請求發送到服務器,咱們使用 XMLHttpRequest 對象的 open() 和 send() 方法:
   xmlhttp.open("GET","ajax_info.txt",true);
   xmlhttp.send();
方法 描述
open(method,url,async)

規定請求的類型、URL 以及是否異步處理請求。java

  • method:請求的類型;GET 或 POST
  • url:文件在服務器上的位置
  • async:true(異步)或 false(同步)
send(string)

將請求發送到服務器。web

  • string:僅用於 POST 請求
      

服務器響應

如需得到來自服務器的響應,請使用 XMLHttpRequest 對象的 responseText 或 responseXML 屬性。ajax

屬性 描述
responseText 得到字符串形式的響應數據。
responseXML 得到 XML 形式的響應數據。
 
 
        xhr.onreadystatechange = function () {
            if (this.readyState === 4 && /^2\d{2}$/.test(this.status)) {
                var value = this.responseText;
                console.log(value);
            }
        };
        xhr.send();//"post請求中若是須要傳遞給後臺數據,咱們須要把JSON格式的字符串放到裏"
 
    非同源策略
        function aaaaa(data) {
            console.log(data);
        }
    前端:利用<script>不存在跨域的概念(我能夠在本身的網頁中引入任何域名下的JS文件),咱們經過<script>的src屬性,向後臺發送一個請求,而且把一個函數的名字(aaaaa)傳遞給後臺(通常來講都是?callback=aaaaa)
    後臺:後臺會把傳遞進來的參數進行解析,獲取到你的方法名aaaaa,而且執行這個方法,把全部須要給你的數據傳遞給aaaaa
    咱們aaaaa中定義的形參data中其實就已經存儲了咱們須要的數據,接下來在作數據解析、數據綁定便可
</script>
<!--<script type="text/javascript"-->
<script type="text/javascript">
        $.ajax({
            type: "get",
            dataType: "jsonp",
            jsonpCallback: "a",
            success: function (data) {
                console.log(data);
            }
        });
 
    $.ajax({
        type: "get",
        dataType: "jsonp",
        jsonp: "cb",//->修改callback這個屬性名爲cb
        jsonpCallback: "aa",//->修改cb傳遞值的名字爲aa
        success: function (data) {
            console.log(data);
        }
    });
 
 
 
ajax獲取後臺數據  提交數據
相關文章
相關標籤/搜索