[フロントエンド学習]AJAX部分学習ノート、翌日
5759 ワード
iframe隠しフレームテクノロジー ajaxが初期になかった場合、フロントエンドプログラマは、ローカルページコンテンツ の更新を実現するために、トランスフォーム技術を用いる.この技術は に戻る. iframeラベルを非表示にし、jsが親ページ(parentを使用して親ページ、すなわち現在のページを取得)を操作することは、バックエンドでデータを動的に返した後、ページのローカル更新を実現する機能 である.は理解するだけで、今はほとんど を使わない.
AJAX開発
AJAX操作フロー
1.
xhrオブジェクトの作成 を作成することができる.しかし実際には である.一般IE 6は の代わりに使用する.
送信の準備 である.リクエスト方式 一般的にフロントエンドで最も一般的なリクエスト方式はgetとpost である.は、要求送信されたパラメータ部分を変数で格納して再操作することを推奨する を行う.
ターゲットurlは、バックエンドファイルにデータを送信するurlアドレス です.非同期または同期識別はtrueとfalseで置き換えられ、デフォルトはtrue非同期です.同期方式はほとんど使用されない 送信の実行 .要点については、上にも述べました. である.
コールバック関数の指定 について詳しく説明する.コールバック関数に含まれる属性値: 0 xhrオブジェクトの初期化に成功したことを識別する 1は、xhrがsend()メソッド送信要求 を呼び出したことを示す.2は、サーバ側がデータを返すが、 は解析されていないことを示す. 3は、解析中に返すデータ を示す.4は解析に成功したことを示し、サーバ側から返されたデータ を用いることができる.であるため、この属性が4であるか否かをコールバック関数で判断するのが一般的である、4のために次の操作 を実行する.
200サーバ側はデータ を正常に返す. 404によって要求されたリソースが見つからない 500サーバ側エラー このステータスコードは、実際にはhttp要求のステータスコード である.この属性は一般的に .
サーバ側応答のデータフォーマット のみを理解する. である. ajaxは現在、この2つのフォーマットの応答データ のみをサポートしている.
jsonデータ紹介データフォーマット で述べたように、jsonデータはjsの一般的なオブジェクトフォーマットとほぼ一致しており、それらの違いだけを説明します. jsonデータは、戻るときに参照アドレス を格納するために変数を必要としない. jsonデータのキーは、 を二重引用符で囲む必要があります. jsonデータ終了セミコロン は不要注意:jsonデータは単純な文字列であり、オブジェクトではなく、 を変換する必要がある.
データ解析 オリジナルJSには、受け取ったjsonデータをオブジェクトに変換する方法 を取得することができる.余談:内蔵メソッド のみを理解することができます.
バックエンドAPIはjsonデータを返す 一般的に、バックエンドはデータベースからデータを取得し、多次元配列にデータを格納し、組み込みメソッドを呼び出して配列をjson形式のデータに変換し(例えば、PHPは に戻る.
同期と非同期原理分析 同期要求方式ブラウザは、他の操作を実行することなく、要求データの戻りを待ち続けるため、ロード中にレンダリングされないまま、ブロック を形成する可能性がある.で非同期のリクエストの方式では、ブラウザはリクエストをxhrオブジェクトに渡して処理し、リクエストを送信した後もブラウザは次のコードの実行をずっと待つことはなく、リクエストしたデータが戻った後、ブラウザはデータ操作を実行し、複数の線が実行されていることに相当するので、マルチスレッド処理方式とも呼ばれる.非同期の古典的な使い方は、ページデータをローカルに更新し、ページ全体を再ロードしないことです. 例を挙げると、リーダーが誰かに仕事を報告させたい場合は、秘書にその人を事務室に知らせることになります.秘書の通知の過程で、指導者は何もしないで人だけを待つのではなく、自分の他のことをしているわけではありません.人が来てから仕事の報告を始めると、この例は非同期の原理と同じ です.
非同期の下位原理の理解 ここではjs下位コードの実行順序、単一スレッド+イベントキューに関する.単一スレッドとは、上から順にコードを実行することを意味し、単一スレッドの実行方式のみである場合、一部のコードが実行時間を必要とするブロックが発生するため、jsはイベントキューメカニズム を追加する.イベントキューとは何ですか?実は簡単です.jsはタイマ、イベント、ajaxに関数を指定すると、コールバック関数をイベントキューに入れ、次のコードを実行し続け、イベントキューループ判定を呼び出します.メインスレッドがアイドル状態である場合、キュー内のコールバック関数は条件を満たす を実行する.です.したがって、イベントキュー内のコールバック関数を実行するには、次の条件を満たす必要があります. コールバック関数がタイマ内である場合、まずメインプログラムが空き、その後、タイマの時間条件が満たされてから が実行される.コールバック関数がイベント内である場合、まずメインスレッドが空き、次にイベントトリガが を実行する.コールバック関数がajaxリクエストの場合、まずプライマリ・プログラムが空き、その後、サーバ側がデータに応答して を実行する.
このように非同期原理を理解しやすくなり、jsはコード実行を2つの線に分け、メインスレッドはずっとコードを実行してもコールバック関数のトリガを待つことはなく、メインスレッドが空きにあり、コールバック関数がトリガ条件を満たすとコールバック関数をメインスレッドに入れてすぐに実行し、その間に何もしない待機過程はありません.ブロックを避けるために が発生しますこの原理を理解する
jqパッケージajaxメソッド jqueryにはajaxメソッドがカプセル化されており、直接 が可能である.では、一般的なプロパティについて説明します.パラメータは、オブジェクトのキー値のペアで設定されていることに注意してください. である. を設定する. を受信する. を呼び出す.
詳細プロパティマニュアル を参照 jqパッケージのajaxメソッドの原理をシミュレートし、 を明らかにする.
iframe
に依存し、現在のページのサブページに相当し、target属性を使用してidを指すと、バックグラウンドの戻りデータはiframeラベルのAJAX開発
AJAX操作フロー
1.
XMLHttpRequest
オブジェクトを作成する2.オブジェクト呼び出しopen
メソッド入力パラメータ、送信要求の準備3.オブジェクト呼び出しsend
メソッド送信要求4.指定コールバック関数 .onreadystatechange = function(){};
を宣言する各ステップの流れを具体的に説明するxhrオブジェクトの作成
var xhr = new XMLHttpRequest();
これによりxhrオブジェクトXMLHttpRequest()
という構造関数には一定の互換性の問題があり、ie 6およびその以下のバージョンはこのオブジェクトをサポートしていないvar xhr = new ActiveXObject('Microsoft.HTTPXML')
を使用して送信の準備
xhr.open(' ',' url',' ')
xhrオブジェクト呼び出しopenメソッドを使用すると、送信準備フェーズに入ることができ、以下はパラメータの受信get
を使用する場合、送信されたパラメータは、ターゲットurlの後に書かれ、?
疑問符で接続されなければならない.複数のパラメータは&
符号で接続するており、中国語の文字化けしを防止するために、パラメータ部分はjs内蔵の方法encodeURI()
を用いてトランスコードpost
が使用される場合、パラメータ部分は送信フェーズのsend()
メソッドに記載され、パラメータはトランスコードを必要としない.またpostを使用するには、送信前に要求ヘッダを設定必要があります.xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
これは固定フォーマットで、直接使用することを理解する必要はありません.xhr.send();
これで要求を送信できるget
方式のパラメータ書込null
である、post
方式であればurlのパラメータ書込コールバック関数の指定
xhr.onreadystatechange() = function(){};
このコールバック関数は、ブラウザによって呼び出されると宣言しただけです.呼び出す条件は、readyState
の属性値が変化する(値が0、1の場合は呼び出さない)ことであり、xhr.readyState
このプロパティは、4つの値で構成されています.xhr.status
プロパティは、サーバ側が返すステータスコードです.readyState
の属性を判断した後に二次判断を行います.つまり、readyState=4
であっても、返されたデータの解析に成功したことを説明するしかありませんが、必ずしも正しいとは限りません.status 200
がサーバ側が正しいデータを返したことを示す場合サーバ側応答のデータフォーマット
xhr.responseXML
はxml形式の応答データを受信し、バックエンドページがxml形式のデータを返すには要求ヘッダheader('Content-type:text/xml')
を加えなければならない.しかし、このようなデータフォーマットは、ラベルペア(メタデータ)の形式でデータの内容を記述するため、ラベルは多くの空間を占有し、解析にも不利であり、xhr.responseText
は文字列フォーマットの応答データを受信し、jsonデータ文字列は現在最も流行しているデータフォーマットであり、そのフォーマットはjs一般オブジェクトと非常に似ているjsonデータ紹介
JSON.parse(json )
が内蔵されており、オブジェクトが属性にアクセスすることで内部のデータJSON.stringify( )
を使用して、オブジェクトを文字列に変換することができ、json_encode( )
を使用して変換)、フロントエンド同期と非同期
jqパッケージajaxメソッド
$.ajax();
呼び出しでtype
属性設定要求方式url
属性設定送信アドレスdata
パラメータを設定、パラメータ部分も対象キー値ペアの方法dataType
属性受信データのフォーマットsuccess
コールバック関数は、データ解析が完了し、正常に呼び出すerror
コールバック関数、サーバ側でエラーが発生した場合に