2009-08-11 11 views
0

EDIT:この問題はBoxyに関連していないため、JQueryのloadメソッドを使用したときに同じ問題が発生しました。jquery ajaxポストコールバック - 「第3回」コール後に操作が停止する

EDIT 2:Ajaxコールバック内からlink.remove()を取り出して、それをajaxロードの前に配置すると、もう問題になりません。 ajaxコールバック関数内の要素を操作するための制限がありますか?

私はBoxyプラグインでJQueryを使用しています。

ページの「フラグ」リンクをクリックすると、Boxyモーダルがポップアップし、ajax経由でフォームが読み込まれます。ユーザーがフォームを送信すると、リンク(<a>タグ)が削除され、新しいものがajaxレスポンスから作成されます。このメカニズムは、よく3回働きます! 3番目の後、コールバック関数は、要素を削除/置換/追加(テストされたいくつかのバリエーションの変形)しません。

私が持っている唯一のヒントは、3番目の呼び出しの後、リンクの親が選択できなくなることです。しかし、私はこれの何かをすることはできません。

申し訳ありませんが、これは非常に些細な問題ですが、私はクライアント側のプログラミングに経験はありません。ここで

<div class="flag-link"> 
    <img class="flag-img" style="width: 16px; visibility: hidden;" src="/static/images/flag.png" alt=""/> 
    <a class="unflagged" href="/i/flag/showform/9/1/?next=/users/1/ozgurisil">Flag</a> 
</div> 

がjsの関連するコードです:

関連するHTML

は以下の通りです

$(document).ready(function() { 

    $('div.flag-link a.unflagged').live('click', function(e){ 
     doFlag(e); 
     return false; 
    }); 
... 

}); 


function doFlag(e) { 
    var link = $(e.target); 
    var url = link.attr('href'); 

    Boxy.load(url, {title:'Inappropriate Content', unloadOnHide:true, cache:false, behaviours: function(r) { 
    $("#flag-form").live("submit", function(){ 

     var post_url = $("#flag-form").attr('action'); 
     boxy = Boxy.get(this); 
     boxy.hideAndUnload(); 
     $.post(post_url, $("#flag-form").serialize(), function(data){ 

      par = link.parent();     
      par.append(data); 
      alert (par.attr('class')); //BECOMES UNDEFINED AT THE 3RD CALL!! 
      par.children('img.flag-img').css('visibility', 'visible'); 
      link.remove();            
     }); 

     return false; 
     }); 
    }}); 

} 
+0

デモはありますか? – montrealist

+0

リンクを削除/置換するのはなぜですか?あなたはちょうどリンクのhrefとクラスの属性を更新できませんか?それはもっと安全なことです。 – montrealist

+0

私はデモを提供しようとします。私がこれに遭遇する前に、リンクを交換するのは手間がかかりませんでした。私がajaxコールバック関数内の要素を置き換えることを試みたのはこれが初めてです。私は最近編集を行った。 – shanyu

答えて

0

古いと返事が遅れますが、そう、私の答えをグーグルながら..私はこれを見つけました。 。:)

これは、同じAjaxデータを返すため、「変更されていない」エラーがスローされる問題です。

"ifModified"オプションがfalse(デフォルトでもある)に設定されていても、これが起こっているようです。

同じAjaxデータを3回戻すと、問題が発生します(jQuery 1.4)。データを一意にする(応答に時間/乱数を追加するだけで)問題は取り除かれます。

これは、ブラウザ(Firefoxの)、jQueryのまたはサーバ(Apacheの)問題であるならば、私は同じ問題があった。..

0

けれども知らない私は箱型の呼び出した後、私はJavaScriptを実行できませんでした。だから私はすべてのjavascriptコードをafterShowに入れます:boxy属性の1つの関数。私は私のフォームを提出する以外はほとんど実行することができます。私の方法はあなたに何かを与えることができます。

関連する問題