ホームページ >ウェブフロントエンド >jsチュートリアル >Ajax オブジェクトのいくつかの一般的なプロパティ、イベント、メソッドの大文字化に関するよくある質問のまとめ
最近かなり暇だったので、ajax メソッドについていくつか整理するのに時間がかかりました。プロジェクトでは、属性、メソッド、イベントの大文字と小文字を区別しないことが原因で ajax セクションで発生する問題が多く、最終的にはプログラムの動作に問題が生じることがよくあります。 ajax オブジェクトの一般的な属性、イベント、メソッドの概要
最近比較的暇だったので、ajax メソッドについていくつか整理することに時間を費やしました。プロジェクトでは、属性、メソッド、イベントの大文字と小文字を区別しないことが原因で ajax セクションの多くの問題が発生し、最終的にはプログラムの動作に問題が生じることがよくあります。
以下は、ajax オブジェクトの一般的な属性、イベント、メソッドの一部です
1) 標準 ajax オブジェクトの属性には、readyState、status、responseText、responseXML が含まれます
2) 非標準の ajax オブジェクト属性、IE ブラウザーの場合、バイナリデータストリームであるresponseBodyがあります。ブラウザの互換性を考慮しなければ、この属性+VBScriptで文字化けの問題はかなり解決できます。
Visual Basicコード
Function Bytes2BStr(vin)'二进制转字串 strreturn = "" for i = 1 to lenb(vin) thischarcode = ascb(midb(vin,i,1)) if thischarcode < &h80 then strreturn = strreturn & chr(thischarcode) else nextcharcode = ascb(midb(vin,i+1,1)) strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode)) i = i + 1 end if next Bytes2BStr = strreturn End Function
3) イベントonreadystatechange、状態遷移関数
4) メソッドには、送信メソッドが指定されている場合に応答ヘッダーを設定するために使用されるsetRequestHeader、open、sendが含まれますPOST として使用するには、content-type を application/x-www-form-urlencoded に設定する必要があります。この応答ヘッダーが設定されていない場合、要求された動的ページはキーと値のペアの形式で値を取得できませんが、送信されたデータはバイナリ ストリームから生成できます。
参考
postにajaxを指定しているがcontent-typeが設定されていない、またはkeyが指定されていない場合に送信されたコンテンツを取得する方法
エラーが発生しやすい
1) を使用して作成されたオブジェクトの場合XMLHttpRequest (IE7 以降を含む) では、属性では大文字と小文字が厳密に区別されます。大文字と小文字が区別されない場合、属性値は未定義になります。たとえば、readyState はreadystate と記述され、responseText はresponsetext と記述されます。
2) IE ブラウザの場合、activexobject が最初に判定された場合、activexobject が実行されて xhr オブジェクトが作成されます。acx を使用して作成された xhr オブジェクト、属性、イベント、メソッドは大文字と小文字を区別しません
3) XMLHttpRequest を使用して作成された場合。 、onreadystatechange すべて小文字にする必要があります。そうでない場合は、実際の状態遷移関数ではなく、カスタム属性を xhr オブジェクトに割り当てることと同じになります。この方法では、コールバックは決して実行されません。 activexobject を使用して IE によって作成された xhr オブジェクトの場合、大文字と小文字は区別されません
4) ポイント 2 と 3 と同様に、XMLHttpRequest が作成されるとき、呼び出しメソッドは大文字と小文字を区別する必要があります。そうしないと、エラーは発生せず、次のプロンプトが表示されます。メソッドが見つかりません。 IE は、activexobject を使用する場合、大文字と小文字を区別しません。
setRequestHeader メソッドを実行する前に open メソッドを呼び出す必要があることを特に強調します。そうしないとエラーは発生しません。
手書きの ajax コードに関するいくつかの提案
1) get のために送信するとき、対応するデータ形式を生成するためにチェックする必要があるいくつかのファイルに対するリクエストでない限り、コンテンツ タイプを設定する必要はありません。たとえば、asp.net の Web サービスは content-type をチェックします。content-type が application/json として指定されている場合、対応する json 形式の文字列が生成されます。
2) get に送信するとき、データがない場合は、send メソッドを呼び出すときにパラメーターとして null を追加するのが最善です。 xhr.send(null);
3) 投稿を送信するときは、open メソッドを呼び出した後、setRequestHeader メソッドを呼び出して content-type を application/x-www-form-urlencoded に設定することを忘れないでください。 responseText、responseXML、responseBody [IE のみ]、status 属性を使用し、readyState==4、status ==200 [オンライン テスト]、または status ==0 [ローカル テスト] の場合に使用する必要があります。
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("microsft.xmlhttp"); xhr.open('get', 'index.html', true); xhr.onreadystatechange = function () { if (4 == xhr.readyState) { if (200 == xhr.status || 0 == xhr.status) { //=========正常返回后的处理代码 } else alert('动态页出问题了~~'); } } xhr.send(null);5) 非同期で実行する場合は、状態遷移関数を追加し、readyState ビットが 4 のときに、responseText または responseXML 属性を使用する必要があります。
同期的に実行する場合は、送信直後にresponseTextまたはresponseXML属性を使用できます。onreadystatechange状態遷移関数を追加する必要はありません。ただし、同期中にネットワーク速度が遅い場合、ブラウザがフリーズしやすくなり、ユーザー エクスペリエンスが低下します。 6) 一番簡単です~~ほほ~~代わりに jquery フレームワークを使用します。
上記は私があなたのためにまとめたものです。
関連記事:
Ajaxリクエスト送受信
以上がAjax オブジェクトのいくつかの一般的なプロパティ、イベント、メソッドの大文字化に関するよくある質問のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。