ホームページ >ウェブフロントエンド >jsチュートリアル >ネイティブ Ajax MIME タイプの実装 (コード付き)

ネイティブ Ajax MIME タイプの実装 (コード付き)

php中世界最好的语言
php中世界最好的语言オリジナル
2018-03-30 15:11:311574ブラウズ

今回はネイティブ Ajax の MIME タイプ (コード付き) を紹介します。ネイティブ 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));
}
コードは、変更されたコードです データ

変数の処理が削除され、sendで渡されるパラメータがparams変数

問題解決

問題は解決しましたが、疑問点は以前使っていたのですが、ネイティブAjaxではメソッドがpostする際に渡されるパラメータは「name=123&age=32」の形式になっているのに、なぜ今シリアル化されたJSONオブジェクト

を渡しても大丈夫なのでしょうか? このとき、追加した MIME タイプに気づきました。Content-type を「application/json」に設定しました。このとき、一般的に使用されているものを思い出しました。 MIME タイプは "application/x-www-form-urlencoded" です。この場合、send メソッドで渡されるパラメーターは "name=123&age=32" でなければなりません。これで混乱は終わりました (~ ̄▽ ̄)。 ~

補足 ちなみに、ステータスコード405。前回見たのは、フロントエンドがリクエストを送信したときで、今回遭遇したときは、渡されたパラメータが間違っていました。これは、バックエンドがこのリクエストの処理をまだ追加していないためです

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

ID カードと銀行カード番号の形式を決定する正規表現の書き方


JS でゼロ以外の正の整数を検証する方法

以上がネイティブ Ajax MIME タイプの実装 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。