お客様のサーバーへデータを転送することができcookieを使用し、それらを使って実装されるしかし、どんな深刻な制限があります。 クッキーの最大サイズは、 kバイト、および各ドメインにのみ設定することができ20人、ということになるだろうが、各リクエストのサイズに制限されます。 cookieベースのajaxは、お客様のサイトはほとんどのために設計するときに便利だから、そのハードを使うことを制限することとしてフォールバックします。 基本的な機能が提供されますcookieを設定すると、画像の読み込み、そしてポーリングする間隔を待つ間に対応して表示されます。 実装は簡単;ほかに何かの警告の内容がその結果、あなた自身のカスタムoncompleteだけのイベントハンドラを設定しています。 どこの例を入力して、サーバーを返した回数と呼ばれてきたことは、以下の2リスティングします。 この例のjavascriptが表示されたphpコードのリスト1と、これは、 cookieを読み込み、その後の反応を設定し、 2のリストが表示されます。
リスト1 -クッキーa jaxの動力
| 1の<html> 2の<head> 3 <title>クッキーテスト< /タイトル> 4 5良いtype="text/javascript"> 6つのファンクションcookierequest ( ) ( ) 7 cookierequest.prototype = ( 間隔8 : 500 、 9試み: 5 、 attemptcounter 10 : 0 、 コール11 :機能( urlには、ペイロード) ( 新しい次元var = 12日付( ) ; 私新しいイメージ= 13 var ( ) ; 14 this.setcookie ( ' cr ' 、ペイロード) ; 15 i.src =のurl + 'ですか? u = ' + d.gettime ( ) ; この自己var = 16 ; 17 this.timerid = settimeout (関数( ) 18 self.read ( ( ) ; ) 、 this.interval ) ; 19 ) 、 読み20 :関数( ) ( 21 this.attemptcounter + + ; 22 / /データをチェック データ= 23 var this.getcookie ( ' cr ' ) ; 24場合(データ!偽= ) ( 25 this.attemptcounter = 0 ; 26 this.oncomplete (データ) ; 27 trueを返し; 28 ) 29 30 / /エラーチェック 31 this.attempts場合 ( this.attemptcounter > ) ( 32 this.onerror ( ) ; 他の( 33 ) この自己var = 34 ; 35 this.timerid = settimeout ( self.read機能( ) ( ( ) ; ) 、 this.interval 36 ) ; 37 ) 38 ) 、 oncomplete 39 :機能(結果) ( 40アラート(結果) 41 ) 、 onerror 42 :関数( ) ( 43アラート( 'リクエストがタイムアウトし' ) ; 44 ) 、 するsetcookie 45 :関数(名前、値、有効期限が切れる) ( document.cookie = 46名+ " = " + +エスケープ(値) 47 ( (期限が切れる)か? " ;有効期限が切れる= " + 48 expires.togmtstring ( ) : " " ) ; 49 ) 、 getcookie 50 :機能(名前) ( var = 51 doccookie document.cookie.split ( " ; " ) ; 52 (私var = 0 ;私< doccookie.length ;私+ + ) ( var = 53ピースdoccookieに[ i ]します。分割("="); 54いる場合( [ 0 ] ==作品名) ( 55戻りunescape (文字列(ピース[ 1 ] )します。 置き換える( / \ + / g 、 " " ) ) ; 56 ) 57 ) 58 falseを返し; 59 ) 60 ) 61の機能テスト( ) ( var cr = 62新しいcookierequest ( ) ; 63 cr.call ( ' cookie.php ' 、 'データの例をいくつか' ) ; 64 ) 65 < /スクリプト> 66 < /頭> 67の<body> テストの<a href='javascript:test()'> 68 < /する> 69 < /ボディ> |
|
|
リスト1は、クッキー動力ajaxの機能は、 javascriptのクラスcookierequest内にラップします。 リクエストをサーバーに作られているのは、メソッドを呼び出す(行11-19 )します。 このメソッドを呼び出すにはurlをリクエストを送信しています。 また、ペイロードには(私たちのコンテンツを送りたいと思うには、サーバー)は、送信されたcookieをリクエストしています。 次にメソッドを使用して、クッキーの名前を設定するsetcookie法cr ( 14行) ;その後、新しいイメージを作成するオブジェクトを設定すると、 srcからリクエストされたurl (行15 )です。 タイマーを起動する方法が完了したら、 readメソッドを実行するごとに500ミリ秒です。
読み出しメソッド(行2038 )の存在を調べ、クッキーcr ( 2324行)します。 存在する場合にそれは、データが渡され、それをoncomplete法(行26 )です。 データが存在しない場合は、私たちのエラーをチェックする;この処理が行われるの数を比較したかを確認いたしました完了したかを確認し、上限設定するには、財産の試み(行31 )です。 にエラーが発生した場合は、メソッドが呼び出されonerror (行32 )です。 エラーが発生していない場合が存在する場合、別のタイマーを開始するには、次のチェック(行34-35 )します。
39-44の行が含まれたメソッドを使用するときに上書きしていただけるクラスです。 oncompleteのメソッドが呼び出されたときにデータが正常にロードされます。 これは、コールバックに相当の財産httpclientクラスです。 onerrorメソッドが呼び出された場合は、リクエストが正常に完了していません;もちろん、このように警告を残すことができ、しかし、多くの場合、よりわかりやすくなるだろうエラーメッセージが表示さを提供することを再試行したり、ユーザーのリクエストします。
cookierequestクラスのメソッドも含まれヘルパーに対処するための取得とcookieを設定します。 するsetcookie ( 45-49行)の値を設定することによって動作するdocument.cookie urlエンコードの形式の文字列をクッキー名=値です。 getcookie (行50-59 ) document.cookie作品を1つに分割され、各団体のcookie (クッキーで区切られた" ; " )そしてこれらの部品を探してループ上にcookieの名前を指定します。 マッチの名前が見つかった場合は、その値が返され;それ以外の場合、 falseが返されます。
phpのページのものが使用されてlisting1 listing2が表示されます。 urlとして使用されることは、メソッドを呼び出すとプロセスが設定して、ペイロード;それを設定するための応答をつかもう読んでいます。
リスティング2 -サーバーp hpのページa jaxのリクエストを処理するために、クッキー
| 1 < ? phpの session_start ( )を2 ; 3場合( ! isset ( $ _sessionの[ '私' ] ) ) ( 4 $ _sessionの[ '私' ] = 0 ; 5 ) 6場合( isset ( $ _cookieの[ ' cr ' ] ) ) ( 7 $ _sessionの[ '私']++; 8するsetcookie ( ' cr ' 、 'サーバーの応答: ' 。 $ _sessionの[ '私'].', 9 ' 。 $ _cookieの[ ' cr ' ] ) ; 10 ) 11 ? > |
このphpのコードを提供し、必要に応じて基本的な機能にアクセスし、 cookieベースのajaxのリクエストします。 phpのセッションを使用し、カウンターを保存するには、各リクエストを増加させることにした。 このコードを延長し、使用することができphpのページを別のアクションを実行するのを決定する、またはその情報を含めることができ、クッキーでは、クライアントから送信されています。 2-5行ハンドルの基本的なセットアップのセッションは、カウンターを0に設定している場合は、今回が初めてコールします。 6-10行ハンドルをチェックして、クライアントのcookieを送信すると、応答しています。 この処理が行われるのcookieを設定するとして次にと共に送信される応答(ライン8-9 )します。 ハンドルをしたい場合は大規模なサーバーの応答、次のようにコードを含める必要があり、複数のクッキーの間でデータを分割しています。
|
|