非同期要求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及び非同期処理要求を規定する.
要求をサーバに送信します.
番号付け
方法
説明
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
原因:ネットが通じないです.更新すれば分かります.