2012-12-07 3 views
0

나는 어떤 양식의 제출과 구문 분석 및 표시되는 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 funciton을 "find"와 "each"속성으로 가져 오는 방법을 알아낼 수는 없습니다.

+2

'success' 핸들러의 시작 부분에서 같은 데이터를'.remove()'할 수 있습니까? – Blazemonger

+1

.remove();를 사용하십시오. 데이터가 삽입되어 올바르게 표시되지 않는 ul을 제거합니다. –

+1

그런 다음'ul'을 제거하지 말고'li'을 제거하십시오. 성공 후 바로 – Blazemonger

답변

1

당신은, 당신의 성공 핸들러의 시작 (적절한 무엇이든 선택 사용) 동일한 데이터를 .remove()해야이 두 번 표시되는 것을 방지 할 수 있습니다.

1

대신 html을 사용하십시오.

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

.html을 사용하면 이전 내용이 제거되고 새로운 내용으로 바뀝니다. :) 이것은 당신이 찾고있는 해결책입니다. – Gallen

+0

이것은 .append 대신 .html을 사용할 때 이미 표시된 데이터의 행을 추가하는 것을 막을지라도 데이터의 한 항목 만 표시합니다. 내 코드를 보면 html을 올바르게 삽입하지만 첫 번째 항목 만 - 루프를 통과해야하고 어떻게 든 표시해야합니까? –

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; 
} 
}); 
}); 
+0

도 마찬가지입니다. 고맙습니다. –

관련 문제