非同期要求ajax、およびgetとpostの違い

6379 ワード

1.  xhr  
var xhr = null;
      
if(window.XMLHttpRequest){
    xhr = new XMLHttpRequest();        
}else{      ie6   
    xhr = new ActiveXObject("Microsoft.XMLHttpRequest");
}
  XMLHttpRequest  
 JS ,window      (  Object,Function...    ),        。 window.XMLHttpRequest    window     。           ,   firefox,opera,safiar,IE7.0,IE8.0(     window           )      ,window  XMLHttpRequest     , IE6.0,5.5     ,IE6.0 5.5        ,  window.ActiveXObject  。        XMLHttpRequest            
2.                     ,       
xhr.onreadystatechange = function(){    
    if(xhr.readyState === 4){    4.        ,     
        if(xhr.status === 200){    200.      
            console.log("XHR      "+xhr.responseText);
        }esle{
            console.log("         ajax  "+xhr.status);
        }
    }
}
onreadystatechange 
メモリ関数(または関数名)は、readyState属性が変わるたびに、この関数を呼び出します.
readyState  XMLHttpRequestの状態があります.0から4まで変わります.
0要求が初期化されていません.
1サーバ接続が確立されました.
2サーバが受信しました.
3要求処理中
4要求が完了し、応答が完了しました.
status  応答状態コード(一番下には対照表があります.)
1 xx情報クラスエラー
2 xxは成功200を表します.
3 xxリダイレクト304
4 xxクライアントエラー404
5 xx業務上のエラー
このstatus属性は、HTTP状態コードを記述しており、このstatus属性は、readyState値が3(受信中)または4(ロード済み)の場合にのみ利用可能である.readyStateの値が3以下の場合、statusにアクセスしようとする値は異常を引き起こす.
xhr.reponseText      応答データを取得
GET   
3.    
xhr.open("GET",url+       , ("?uname=  &age=16"),true)     true          ,   

4.    
xhr.send()
POST   
3.    
xhr.open("POST",url,true)
   post      ,          
4.     
// xhr.setRequestHeader("Content-type","application/json; charset=utf-8");   json
// xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");       
// xhr.setRequestHeader("Content-type", "text/plain; charset=utf-8");    
// xhr.setRequestHeader("Content-type", "text/html; charset=utf-8");  HTML

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

5.    
xhr.send(     )
方法
説明
open(method,url,async)
要求の種類、URL及び非同期処理要求を規定する.
  • method:要求の種類.GETまたはPOST
  • url:ファイルのサーバ上の位置
  • async:true(非同期)またはfalse(同期)
  • send(string)
    要求をサーバに送信します.
  • sting:POST要求のみに使用する
  • HTTPの8種類の要求方式
    番号付け
    方法
    説明
    1
    GET
    指定されたページ情報を要求し、エンティティ本体に戻る.
    2
    HEAD
    get要求と似ていますが、戻りの応答には具体的な内容がなく、ヘッダを取得するために使用されます.
    3
    POST
    指定されたリソースにデータを送信する処理要求(例えばフォームを提出するか、ファイルをアップロードする).データは要求体に含まれる.POST要求は、新しいリソースの確立および/または既存のリソースの修正をもたらすかもしれない.
    4
    PUT
    クライアントからサーバに送信されるデータは、指定されたドキュメントの内容の代わりになります.
    5
    DELETE
    サーバに指定されたページの削除を要求します.
    6
    CONNET
    HTTP/1.1プロトコルは、接続をパイプ方式に変更できるプロキシサーバに予約しておく.
    7
    OPTION
    クライアントがサーバの性能を確認することを許可します.
    8
    TRACE
    サーバによって受信された要求は、主にテストまたは診断に用いられる.
    GET要求とPOST要求の違い
    簡単な点:
    get情報はアドレスバーに表示され、セキュリティはpostより低い.
    getが1回で送る情報は2000文字程度に制限されていますが、postは制限されていません.
    getはurl符号化しかできませんが、POSTは多様な符号化方式をサポートしています.
    https://www.cnblogs.com/logsharing/p/8448446.html  (getとpostの違いを紹介するブログを紹介します)
     
    Ajax statusとstatus Textの状態対照表
    status
    status Text
    説明
    0**
    を選択します.
    初期化されていない
    1**
    を選択します.
    受信を要求し、処理を継続する.
    100
    Continue
    お客様は引き続き要求を出さなければなりません.
    101
    Switch ing protocols
    お客様は要求に応じて、サーバーがHTTPプロトコルバージョンを変換することを要求します.
    2**
    を選択します.
    操作が成功しました.
    200
    OK
    取引が成功した
    201
    Created
    ヒント新しいファイルのURLを知っています.
    202
    Acceepted
    受け入れと処理が完了していません.
    203
    Non-Authortative Information
    戻り情報が不確定または不完全です.
    204
    Noコンテント
    要求は受信しましたが、戻り情報は空です.
    205
    Reset Contott
    サーバーが要求を完了しました.ユーザエージェントは現在閲覧済みのファイルをリセットしなければなりません.
    206
    Partal Contint
    サーバーは一部のユーザのGET要求を完了しました.
    3**
    を選択します.
    この要求を完了するにはさらに処理しなければなりません.
    300
    Multile Choices
    要求されたリソースは、複数の場所で入手可能である.
    301
    Moved Permanently
    要求データを削除
    302
    Found
    他の住所で要求データが見つかりました.
    303
    See Other
    お客様は他のURLやアクセス方法にアクセスすることをお勧めします.
    304
    Not Modified
    クライアントはGETを実行しましたが、ファイルは変更されていません.
    305
    Use Proxy
    要求されたリソースはサーバが指定したアドレスから取得しなければなりません.
    306
     
    前バージョンのHTTPで使用されているコードは、現行バージョンでは使用されません.
    307
    Temporary Redirect
    要求されたリソースの一時的な削除を説明する.
    4**
    を選択します.
    要求にはエラー文法が含まれています.または完了できません.
    400
    Bad Request
    構文エラーなどのエラー要求
    401
    Uauthorized
    認証の要求に失敗しました
    402
    Payment Required
    有効なChargeToヘッダ応答を保持します.
    403
    Forbidden
    要求は許可されていません.(サーバ上のファイルまたはディレクトリの権限設定によりリソースが利用できなくなります.)
    404
    Not Found
    ファイル、クエリー、またはURlが見つかりませんでした.指定されたリソースが見つかりませんでした.
    405
    Method Not Allowed
    ユーザーがRequest-Lineフィールドで定義する方法は許可されていません.
    406
    Not Acceptble
    ユーザから送信されたAcceptに従ってリソースのアクセスができないことを要求する.
    407
    Proxy Authentication Required
    401のように、ユーザはまずプロキシサーバ上で授権されなければならない.
    408
    Request Timeout
    クライアントはユーザが指定した空き時間内に要求を完了していません.
    409
    Conflick
    現在のリソースの状態については、要求が完了しませんでした.
    410
    Gone
    サーバにはこのリソースがなく、さらに参照アドレスがありません.
    411
    Length Required
    サーバはユーザー定義のConteet-Length属性要求を拒否します.
    412
    Procondition Failed
    一つ以上の要求ヘッダフィールドが現在の要求でエラーです.
    413
    Request Entity Too Large
    要求されたリソースはサーバが許可するサイズより大きいです.
    414
    Request-URI Too Long
    要求されたリソースURLは、サーバが許可する長さよりも長い.
    415
    Usupported Media Type
    要求されたリソースは要求項目のフォーマットをサポートしていません.
    416
    Requested Range Not Suitable
    要求にはRange要求ヘッダフィールドが含まれており、現在の要求リソース範囲には、range指示値がなく、要求にはIf−Range要求ヘッダフィールドも含まれていない.
    417
    Expection Failed
    サーバは要求Expectヘッダフィールドに指定された期待値を満たしていません.プロキシサーバであれば、次のサーバが要求を満たすことができないかもしれません.
    5**
    を選択します.
    サーバが完全有効要求を実行できませんでした.
    500
    Internal Server Error
    サーバに内部エラーが発生しました.
    501
    Not Implemented
    サーバは要求の関数をサポートしていません.
    502
    Bad Gateway
    サーバは一時的に利用できません.システムの過負荷を防ぐためです.
    503
    Service Unavailable
    サーバーのオーバーロードまたはメンテナンスを一時停止します.
    504
    Gateway Timeout
    関口過負荷、サーバは別の関口またはサービスを使用してユーザに応答し、待ち時間設定値が長い.
    505
    HTTP Version Not Supported
    サーバーがサポートされていない、または拒否された要求ヘッダで指定されたHTTPバージョン
    12029
    an unknown error occurred while processing the request on the server.the status code returned from the server was:12029
    原因:ネットが通じないです.更新すれば分かります.