問題タブ [onreadystatechange]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - XHR.onreadystatechange コールバックで「4」(完了) とは異なる readyState の有用な使用法はありますか?
XHR オブジェクトを使用して、"4" (完全)以外でインターセプトonreadystatechange
したことがありますか?readyState
可能性のあるさまざまな値で関数をトリガーしたことがあるかどうか知りたいです。他の状態の実際の使用は想像できません。それらは何かをするのにいくらか役に立ちますか?
実用的な例があれば教えてください。
- 0: リクエストは初期化されていません
- 1: サーバー接続が確立されました
- 2: リクエストを受け取りました
- 3: リクエストの処理
- 4: リクエストが終了し、レスポンスの準備ができています
javascript - Firefox で onreadystatechange が呼び出されない
これが私のコードです。
ajaxリクエストを送信して値を返す私の関数:
私の他の関数は myAjaxCall 関数の戻り値を使用します
Firefoxブラウザを除いて、この方法で物事は完全に機能しています。その理由は、Firefoxで同期リクエストを使用するonreadystatechange
と呼び出されないためです。
ただし、私の場合、同期されたajax リクエストを使用する必要があります。そうしないと、myAjaxCall()
関数の戻り値は常に initail 値 " var myValue=0
" になります。
このFirefoxの問題を取り除く方法は??
jquery - jQueryプレフィルターを使用して、readyState == 3のonreadystatechangeイベントを検出できますか?
XHRストリーミングCometテクニックをjQueryに実装しようとしていますが、onreadystatechange
イベントの検出に問題があります。Firefox4.0.1を使用しています。
プレフィルター(jQuery 1.5以降で使用可能)を使用して、ネイティブXHRオブジェクトを変更します。具体的には、イベントハンドラーをイベントに追加しonreadystatechange
ます。私はhttp://jsfiddle.net/Rdx6f/でそれの大まかな実装を持っています。このコードは、イベントが発生したときにXHRオブジェクトreadyState
とresponseText
属性をドキュメントに追加します。onreadystatechange
ただし、奇妙なことに、が1のonreadystatechange
場合にのみイベントを検出するようreadyState
です。
つまり、jQueryはonreadystatechange
、XMLHttpRequestオブジェクトが「opened」(readyState 1)の状態にあるときにイベントを検出しているように見えますが、XHRオブジェクトが「headersreceived」(readyState 2)、「loading」(readyState 3)の状態にあるときは検出していません。 )、または「完了」(readyState 4)。
奇妙なことに、私alert()
がイベントハンドラーにいる場合、readyStateが1、2、3、および4のときの処理が表示されます。http://jsfiddle.net/Rdx6f/1/を参照してください。http://jsfiddle.net/Rdx6f/と同じコードですが、ドキュメントに追加する代わりにingするだけです。onreadystatechange
alert()
ネイティブJavaScriptでが1、2、3、または4のonreadystatechange
場合のイベントも検出できます。http://jsfiddle.net/d7vaH/を参照してください。(このコードは、本「Even FasterWebsites」の115ページにあるDylanSchiemannによるXHRストリーミングの実装からほぼ逐語的に引用されています。)readyState
jQueryのAjaxプレフィルターを間違って使用したり、JavaScriptを間違えたりするなど、ここで何か間違ったことをしているだけですか?これはおそらくjQueryのバグですか?
ajax - AJAXの結果Divが消える
AJAXを使用して、ファイルを開き、それをDIVに出力するCGIスクリプトを呼び出します。
これは私が持っているテストページではうまく機能しますが、何らかの理由で別のページでコンテンツをDIVに出力してから、DIVをクリアします。alert()を使用すると、readystateが1,2,3,4,1,4から変化し、その後4回目にdivの内容がクリアされるのを確認できます。実際にはupdatepage()関数を2回呼び出しますが、2回目はDIVがクリアします。ファイアバグをチェックインすると、innerHTMLがコンテンツを持つものから""を持つものに変わります。
私のテストページでは、同じシーケンスのreadystateが発生しても、これは発生しません。
これが私が問題を抱えているコードのスニペットです:
編集 !!!!!!!!!!!!!!!!!
何が悪いのかわかったと思いますが、理由はわかりません。
アンカーのhtmlhref=""が問題の原因でした。私がそれを削除すると、divは入力されたままになりました。
これにより、印刷後にDIVが消えます。
href=""をhref="#"に置き換えると修正されました。#はこのページを意味します
javascript - evalとalternativeを使用して大きなjsonを解析する際の問題
javascriptを使用して大きなjsonファイル(240'000文字)を解析しようとしています。サーブレットからjsonデータを取得するためにajaxを使用しています。私が使用しているコードは、小さいサンプルでも正常に機能しますが、xmlHttp.responseTextに大量のjsonデータが含まれている場合はこれをスローします。
予期しないトークンが次の行にあることを示しています
これがコードの要点です:
eval()を使用するメソッドは、違いが生じる場合はxmlHttp.onreadystatechangeから呼び出されます。
また、json2.jsを使用してみたところ、同じ結果が得られました。小さいjsonサンプルでも正常に機能しますが、240kのcharsファイルで試してみると次のように表示されます。
前もって感謝します。
python - flush() の後に Python で stdout をクリアする
Python スクリプトの出力を、印刷された Web ページにストリーミングしようとしています。
したがって、私のjavascriptでは次のようにします。
私のPythonスクリプトには次のものがあります:
今私は期待0 1 2 3 4
していますが、私が得るのは0 0 1 0 1 2 0 1 2 3 0 1 2 3 4
私が本当に欲しいのは、onreadystatechangeごとに1桁を送信することである場合、毎回バッファ全体を送信しているようです。
私は何を間違っていますか?
javascript - 動的に作成するスクリプト: readyState は決して「完了」しません
スクリプトが完全にロードされた後に何かをしようとしています。(IE8)
テストに使用するスクリプト: http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
および無効なもの: http://ajax.googleapis.com/ajax/libs/ jquery/1.5.1/jquery.minaaaaaaa.js
コード...
私の場合、「完了」は表示されず、URLが無効であっても「ロード済み」が表示されます。したがって、スクリプトが IE に正しくロードされているかどうかを判断する方法はありません。
私は何か間違ったことをしていますか?完全な状態を取得できないのはなぜですか?
アップデート
OK、いくつかの記事を読みましたが、readystate はスクリプトの読み込みを検出する信頼できる方法ではないようです。
そうする別の方法はありますか?jQuery を使用せず、純粋な Javascript を使用します。
javascript - IE7 の History.js onstatechange が機能しない
History.js を統合すると、このコードは URL の変更時に実行されます。
IE7 (IE8 の互換モード) を除くすべてのブラウザーで問題なく動作します。History.js でこれを処理できると思いました。
IE7 が onStateChange イベントを認識しないというのは本当ですか? この場合、どのウィンドウ イベントを使用できますか?
javascript - JavaScript コールバック関数で、既存のオブジェクト プロパティの値を取得できない
その場でスクリプト タグを作成して js をロードしています。スクリプトのロード時にコールバック関数を記述しましたが、js がロードされた後に関数が呼び出されると、firebug で値をチェックしたときにオブジェクト プロパティにアクセスできません。不足している。以下は私のコードです。私のコードの問題は何ですか、または同じことを行うための別の方法があります。
javascript - オブジェクト指向 JavaScript - AJAX クラス
AJAX クラスに取り組んでいます。コードは次のとおりです。
次に、明らかに次のようにインスタンス化されます。
handleRequestStateChange
を処理するため、メソッドに問題がありますxmlHttp.onreadystatechange
。一般に、onreadystatechange の関数を定義する場合、たとえば、呼び出し時にかっこを含めません。xmlHttp.onreadystatechange = handleRequestStateChange;
しかしhandleRequestStateChange()
、クラスのスコープを維持しようとしているため、onreadystatechange で問題が発生しています。関数は呼び出されますが、0 の readyState でスタックしているようです。
どんな助けや洞察も大歓迎です。詳細を含める必要がある場合、または不明な点がある場合はお知らせください。