91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ajax原生如何實現MIME類型

發布時間:2021-06-03 14:05:32 來源:億速云 閱讀:107 作者:小新 欄目:web開發

小編給大家分享一下Ajax原生如何實現MIME類型,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

問題描述

下面的例子是一個Ajax的post請求的代碼,這段代碼在測試運行的時候,發現返回的狀態碼為400,服務器不能理解的請求,后來經過查看和修改,發現只需要將下面的代碼稍微改造一下就好了

原代碼

var send = function (url, params, fn) {
  var me = this;
  var xhr = null;
  var data = '';
  fn = fn || function() {};
  params = params || {};
  for(var item in params) {
   data += item + '=' + params[item] + '&';
  }
  if(data[data.length - 1] == '&') {
   data = data.slice(0, data.length - 1);
  }
  if(window.XMLHttpRequest) {
   xhr = new XMLHttpRequest();
  }else if(window.ActiveXObject) {
   xhr= new ActiveXObject("Microsoft.XMLHTTP");
  }
  xhr.open("post", url, true);
  xhr.setRequestHeader("Content-type", "application/json");
  xhr.onreadystatechange = function () {
   if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
    fn(JSON.parse(xhr.responseText));
   }
  };
  xhr.send(JSON.stringify(params));
}

修改之后的代碼

var send = function (url, params, fn) {
    var me = this;
    var xhr = null;
    fn = fn || function() {};
    params = params || {};
    if(window.XMLHttpRequest) {
      xhr = new XMLHttpRequest();
    }else if(window.ActiveXObject) {
      xhr= new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhr.open("post", url, true);
    xhr.setRequestHeader("Content-type", "application/json");
    xhr.onreadystatechange = function () {
      if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
        fn(JSON.parse(xhr.responseText));
      }
    };
    xhr.send(JSON.stringify(params));
}

這兩段代碼的差別就是,修改之后的代碼去掉了關于data這個變量的處理以及在send中傳遞的參數變為了params這個變量

問題解惑

問題是解決了,但是我心里的疑問卻產生了,之前在使用原生的Ajax的時候,當method為post的時候,傳遞的參數的形式是”name=123&age=32”這樣子的,那么為什么現在傳遞一個序列化的JSON對象就可以了呢?

這時候我注意到自己所加的MIME類型,也就是設置Content-type的那處,我設置的是"application/json",這樣看起來就解釋的通了,這時候我回想起之前常用的MIME類型是“application/x-www-form-urlencoded”,這種時候send方法傳遞的參數就要求是”name=123&age=32”這樣子的,到這里,解惑完畢啦(~ ̄▽ ̄)~

補充

順便說下405這個狀態碼,上一次見到它的時候,是我前端發送請求的時候,傳遞的參數不對,這次遇到它的時候,是因為后臺還沒有添加這個請求的處理

以上是“Ajax原生如何實現MIME類型”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台南县| 新密市| 沂源县| 房山区| 自贡市| 泗水县| 巴中市| 宜昌市| 滨海县| 永靖县| 长垣县| 新宾| 许昌市| 繁峙县| 山阳县| 新丰县| 保定市| 鹤峰县| 雷山县| 黎城县| 武平县| 崇阳县| 安顺市| 宁陕县| 达拉特旗| 芜湖县| 镇江市| 九台市| 石家庄市| 明光市| 新平| 葵青区| 江油市| 项城市| 海宁市| 海原县| 咸宁市| 城固县| 胶州市| 东乡族自治县| 北川|