0

私はAjaxの問題を抱えています。

onblur()入力フィールドがあり、イベントで変更された値を送信したい。刺激的なちらつきがあることを除いて、すべて正常に機能します。

新しい値を入力してクリックします。値が新しい値に変わる前に、古い値がフラッシュバックします...

これが私がやっている方法です。onblur入力要素に関数を追加します。

  onblurevent = function()
  {
    HN.Gui.HTML.post(bindingpage, bindingref, this.value);
  };
  HN.Util.addEvent(elem, "blur", onblurevent);

イベントは util 関数にバインドされています。

HN.Util.addEvent = function(obj, type, fn)
{
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );};
    obj.attachEvent( 'on'+type, obj[type+fn] );
  } else
    obj.addEventListener( type, fn, false );
};

そして、起動時に jQuery 投稿をトリガーします。

HN.Gui.HTML.post = function(page, ref, value)
{
    var json = (value == "")
    ? {clear: "contents"}
    : {set: {formula: value}};

  var url = page + ref + "?attr";

  $.post(url, JSON.stringify(json));
};

それはすべて非常に簡単です。

4

1 に答える 1

0

Ajax の更新サイクルの成果物であることが判明しました。

  1. フロントエンドの変更
  2. バックエンドへの POST
  3. バックエンドからフロントエンドへのCOMET変更通知
  4. フロントエンドを再描画する

問題は、通知が 2 回トリガーされることでした。1 回目は「新しい」値が通過する前、次に通過したときで、ちらつきが発生していました...

于 2014-02-19T20:08:55.743 に答える