PeriodicalUpdaterを使用してデータを取得する際の問題

私はJSを使用して以下の問題について混乱しています:

var abc='';
var on=new Ajax.PeriodicalUpdater("onlinelist","URL",
    {
        method:'get',
        onSuccess:function(transport){
            abc+=transport.response;
        },
        frequency:1000
     }
);
if(abc!=='') {
    on.stop();
    alert(abc);
}

However, the alert is empty; If I replace the alert(abc); line with alert('123');alert(abc);

Then I'll get the expected contents from transport.response

私は多くの材料をチェックし、なぜこれが起こるのか分からない。 私は誰かがその理由を指摘し、余分な最初のアラートを追加せずに修正できることを願っています。

0

1 答え

frequence should be frequency. I'm assuming the other values are just placeholders.

Ajaxリクエストが完了する前に alert が起動し、次のAjaxリクエストの結果としてアラートが呼び出されません。

働くフィドルを参照してください。

0
追加された
@JimLallyしかし、 abc の値の確認はアップデータの外部で行われます。アップデータの結果に基づいて何かを行う必要がある場合、明らかに success コード>関数。アップデータの外部のコードは一度だけ実行されます。
追加された 著者 Dave Newton,
更新されたフィドルをご覧ください。将来の訪問者が類似しているように、回答を受け入れる、またはアップアップすることを覚えておいてください問題はあなたの仕事から利益を得ることができます!
追加された 著者 Dave Newton,
間違いを指摘していただきありがとうございます。私はそれを変更しました。要点は、何回かAjax.PeriodicalUpdaterを停止したいということです。それからabcを得る。コードが現在表示されているように: "if"部分で警告し、実行が停止し、 "alert"が1つある場合、abcは空です。 "if"部分に2つの "alert"がある場合、abcは空ではありません。それは奇妙だ 。
追加された 著者 Jim Lally,
ああ、アップデーターを止める良いアイデアはありますか?私はあなたの意味を持っていますが、周波数を1に変更しても、アップデータは一度しか実行されません。つまり、on.stop()のコードが外で動作します。そしてアラートの問題が発生します。
追加された 著者 Jim Lally,
うん!私はたくさんのことを学びました。
追加された 著者 Jim Lally,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript