jquery ajax post callback - 在“第三次”调用之后操作停止

时间:2009-08-11 18:42:01

标签: jquery-plugins jquery

编辑:问题与Boxy无关,我在使用JQuery的加载方法时遇到了同样的问题。

编辑2 :当我从ajax回调中取出link.remove()并将其放在ajax加载之前时,问题就不复存在了。在ajax回调函数中操作元素是否存在限制。

我正在使用带有Boxy插件的JQuery。

单击页面上的“标记”链接时,弹出一个Boxy模式并通过ajax加载表单。当用户提交表单时,将删除链接(<a>标记),并从ajax响应中创建一个新链接。这个机制可以工作3次!在第3次之后,回调函数不会删除/替换/追加(测试几种操作变量)元素。

我唯一的提示是在第3次调用之后,链接的父级变为不可选择。但是,我不能做任何事情。

很抱歉,如果这是一个非常微不足道的问题,我没有客户端编程经验。

相关的html如下:

<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代码:

$(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;
        }); 
    }});

}

2 个答案:

答案 0 :(得分:0)

旧的和迟到的回复,但是..我在搜索我的答案时发现了这一点,所以......:)

我认为这是抛出“未修改”错误的问题,因为您返回相同的Ajax数据。

即使“ifModified”选项设置为false(这也是默认值),似乎也会发生这种情况。

三次返回相同的Ajax数据会给我带来问题(jQuery 1.4)。使数据唯一(只在响应中添加时间/随机数)可以解决问题。

我不知道这是浏览器(Firefox),jQuery还是服务器(Apache)问题。

答案 1 :(得分:0)

我遇到了同样的问题,我打电话给四四方后无法运行javascript。所以我将所有的javascript代码放在afterShow中:函数的一个boxy属性。除了提交我的表格,我几乎可以跑。我的方式可以给你一些东西。