如何仅将此数据附加一次

时间:2012-12-07 19:33:37

标签: jquery ajax

我有一些返回的xml,正在通过提交表单进行解析和显示:

$("#Button").live('click',function(){
$("#Form").validate({
    submitHandler: function(form) {
        $('#prcs3').show();
        var dataString = $(form).serialize();
        $.ajax({
            type: $(form).attr('method'),
            url: form.action,
            data: dataString,
            clearForm: true,
            success: function(data) {
                var answer = $(data).find("td:eq(3)").text();
                var message = $(data).find("td:eq(5)").html();
                var $xml = $( message );
                if (answer==="True") {
                    $('#prcs3').hide();
                    $xml.find('license').each(function(){
                        var XXXCustomerID = $(this).find('FXCMCustomerID').text();
                        var XXLicense  = $(this).find('NTLicense').text();
                        var Log  = $(this).find('Log').text();
                        var ExpirationDate  = $(this).find('ExpirationDate').text();
                        $("#resultGenerate").show().append($('<li><span class="ID">' + XXXCustomerID + '</span><span class="XXL">' + XXLicense + '</span><span class="Log">' + Log + '</span><span class="Exp">' + ExpirationDate + '</span></li>'));

                    });
                } else {
                    $('#prcs3').hide();
                    $('input[type="text"], input[type="password"]').val("");
                }
            }
        });
        return false;
    }
});
});

我需要找出一种方法来允许它只追加一次,或者隐藏div并在再次点击两次时重新填充它。我不想要的是用户能够多次单击按钮并继续添加相同的记录。我试图通过检查它是否有长度,并在if / else语句中执行或可能使用.one函数来挂钩它,但无济于事。我无法弄清楚如何在if / else中包装正确的部分,或者如何让.one函数同时获取“find”和“each”属性。

3 个答案:

答案 0 :(得分:2)

Ricardos的替代方案回答:

$("#Button").live('click',function(){
$("#Form").validate({
submitHandler: function(form) {
    $('#prcs3').show();
    var dataString = $(form).serialize();
    $.ajax({
        type: $(form).attr('method'),
        url: form.action,
        data: dataString,
        clearForm: true,
        success: function(data) {
            var answer = $(data).find("td:eq(3)").text();
            var message = $(data).find("td:eq(5)").html();
            var $xml = $( message );
            if (answer==="True") {
                $('#prcs3').hide();
                $xml.find('license').each(function(){
                    var XXXCustomerID = $(this).find('FXCMCustomerID').text();
                    var XXLicense  = $(this).find('NTLicense').text();
                    var Log  = $(this).find('Log').text();
                    var ExpirationDate  = $(this).find('ExpirationDate').text();
                    $("#resultGenerate").empty();    //Empty the content before placing new stuff in                    
                    $("#resultGenerate").show().append($('<li><span class="ID">' + XXXCustomerID + '</span><span class="XXL">' + XXLicense + '</span><span class="Log">' + Log + '</span><span class="Exp">' + ExpirationDate + '</span></li>'));

                });
            } else {
                $('#prcs3').hide();
                $('input[type="text"], input[type="password"]').val("");
            }
        }
    });
    return false;
}
});
});

答案 1 :(得分:1)

请改用html

$("#resultGenerate").show().html('...');

答案 2 :(得分:1)

您应该在成功处理程序的开头.remove()使用相同的数据(使用适当的选择器),以防止它被显示两次。