ホームページ  >  記事  >  バックエンド開発  >  ajax のシンプルなパッケージ化の詳細な紹介

ajax のシンプルなパッケージ化の詳細な紹介

小云云
小云云オリジナル
2018-01-29 15:09:131577ブラウズ

この記事では主に、ajax の単純なカプセル化の詳細な紹介を共有します。皆さんのお役に立てれば幸いです。

ajax は一般に 4 つの単純な部分に分かれています:

  1. ajax オブジェクトを作成します (IE と互換性がある場合は、いくつかの処理を行う必要があります)

  2. Connection、つまりリクエスト オブジェクトの open メソッド(get と post は少し異なります。get パラメーターは URL の後に置く必要があり、post はリクエスト ヘッダーを設定する必要があります)

  3. Send、つまりリクエスト オブジェクトの送信関数 (post パラメーターはsend)

  4. Receive、in onreadystatechange (ストレージ関数または関数名、readyState 属性が変更されるたびに、この関数が呼び出されます。) 関数。

タイムアウトとこれらを追加することもできます

onreadystatechange分析

  1. 最初にreadyStateのステータスを決定する必要があります(4つの状態があります)

    ①: 0、リクエストは初期化されていません

    ②: 1 、サーバー接続が確立されました ;

    ③: 2. リクエストが受信されました;

    ④: 3. リクエストが処理されています;

    ⑤: 4. リクエストが完了し、応答の準備が整いました

  2. readyStateが4に等しい場合、ステータスを再度判断する必要があります

  3. リクエストが成功した場合、ステータスステータスは200〜302で、304があります(キャッシュです)

'use strict';

var $ = {};
$.ajax = ajax;

function ajax(options) {

  // 解析参数
  options = options || {};
  if (!options.url) return;
  options.type = options.type || 'get';
  options.timeout = options.timeout || 0;

  // 1 创建ajax
  if (window.XMLHttpRequest) {

    // 高级浏览器和ie7以上
    var xhr = new XMLHttpRequest();
  } else {

    //ie6,7,8
    var xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
  }

  // 2 连接
  var str = jsonToUrl(options.data);
  if (options.type === 'get') {
    xhr.open('get', `${options.url}?${str}`, true);

    // 3 发送
    xhr.send();
  } else {
    xhr.open('post', options.url, true);

    // 请求头
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

    // 3 发送
    xhr.send();
  }

  // 接收
  xhr.onreadystatechange = function() {

    // 完成
    if (xhr.readyState === 4) {

      // 清除定时器
      clearTimeout(timer);

      if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304) {

        // 成功
        options.success && options.success(xhr.responseText);
      } else {
        options.error && options.error( xhr.status );
      }
    }
  };

  
  // 超时
  if (options.timeout) {
    var timer = setTimeout(function(){ 
            alert("超时了");
            xhr.abort(); // 终止
        },options.timeout);
  }
}


// json转url
function jsonToUrl(json) {
  var arr = [];
  json.t = Math.random();
  for(var name in json) {
    arr.push(name + '=' + encodeURIComponent(json[name]));
  }
  return arr.join('&');
}

関連する推奨事項:

WeChat アプレットは、ネットワーク リクエストの単純なカプセル化のためのコード ケースを実装します

php いくつかの一般的な JS 操作の単純なカプセル化_PHP チュートリアル

単純な Ajax カプセル化


以上がajax のシンプルなパッケージ化の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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