2011-11-28 7 views
0

처음 jquery post()를 사용하고 있는데 반환 된 데이터를 단순히 추가 할 수 없습니다. 필자의 경우 데이터는 단순히 액션이 호출하는 페이지의 테이블 행입니다. 내가 가진이Jquery post() - 반환 데이터를 추가 할 수 없습니다.

     $.post(mysaveurl , $("#installment_form").serialize(), "html") 
          .success(function(data){            
           $("#paymentplantable table tbody").append(data); 
           $dialog.dialog('destroy'); 
          }).error(function(){ 
           alert("Please ensure that all fields are populated."); 
          }); 

내 데이터는 데이터베이스를 조회하지만 대화 상자는 삭제되지 않습니다. 이 meens는 내가 추가하고있는 선이 흐름을 죽인다. 참고 : 위의 위의 'html'매개 변수를 사용했습니다. 예제에서 xml과 json 만 사용 되었기 때문에 해당 ligal인지 확실하지 않습니다. 그때 나는 기존 테이블에 테이블 행을 추가 할 때, 세포가 형성되는 말이며, 그것은 내가 내 데이터를 gething 오전에 일이

     $.post(mysaveurl , $("#installment_form").serialize()) 
          .success(function(data){ 
           $dialog.dialog('destroy'); 
           var content = $(data).find('tr');   
           $("#paymentplantable table tbody").append(content); 
          }).error(function(){ 
           alert("Please ensure that all fields are populated."); 
          }); 

로 수정했습니다. 방화 광구를 사용하여 DOM을 검사하면 테이블이 구조적으로 올바르지 만 올바른 테이블 행으로 표시되지 않고 모든 데이터가 왼쪽으로 "압착"됩니다.

나는 다음 HTML이 제대로 전달되지 않는 것을 thaught, 그래서 'mydivwrapper'는 TR 주위에 배치 사업부가 어디

var content = $(data).find('mydivwrapper').html(); 

을 다음과 같이 내가 JQuery와 HTML() 메소드를 사용하고도를 통해 들어온다 반환하는 "데이터". 이것은 또한 나쁜 생각이었습니다.

도와주세요.

편집 :

내가 내 스크립트를 조금 변경되었습니다. 내가 반환 된 데이터를 경고 할 때 SE는이

     dataString = $("#installment_form").serialize(); 
         $.ajax({ 
          type: "POST", 
          url: mysaveurl, 
          data: dataString, 
          dataType: "text", 
          success: function(data) {                  
           alert(data); 
          } 
         }); 

나는이

<?xml version="1.0" encoding="UTF-8"?> 
<html><tr><td>31</td><td>147.0</td><td>Monday 14 November, 2011</td><td style="height:20px; width:20px;" class="edit_in_table"/><td style="height:20px; width:20px;" class="remove" id="/starburst/invoices/removeInstallment/14/31"/></tr></html> 

가 해결 얻을 : 내 행동에 테이블 행을 건설하고 문자열로 표시를 반환. 위의 행동이 발생했는지 확실하지 않습니다.

또한이 게시물을 읽는 모든 사용자를 위해 jquery 대화 상자에서 양식을 게시하는 데 큰 어려움을 겪고있었습니다. 당신은 동적으로 대화 상자를 만들었고 DOM에 없었기 때문에 $ ("# mydialig")를 호출해야했습니다. remove(); 매번 datepicker를 표시하고 이전 값을 제출하는 양식 양식을 막을 수 있습니다. 이것이 도움이되기를 바랍니다. 여기에 최종 코드가 있습니다.

function addInstallment(){ 
     $("#newinstallment").live("click", function(){ 
      var $dialog = $('<div></div>'); 
      var mysaveurl = $(this).attr("saveurl"); 
      $dialog.load($(this).attr("formurl"), function(){ 
       $("#mydatepicker").datepicker(); 
      }).dialog({ 
       title: 'Add new payment item', 
       width: 450, 
       modal: true, 
       buttons: { 
        Save: function() { 
         dataString = $("#installment_form").serialize(); 
         $.ajax({ 
          type: "POST", 
          url: mysaveurl, 
          data: dataString, 
          dataType: "text", 
          context: $(this), 
          success: function(data) { 
           $("#paymentplantable table tbody").append(data); 
           var newremoveurl = "${removeinsturlNoIds}"+$("#paymentplantable tr:last td:last").attr("id"); 
           $("#paymentplantable tr:last td:last").attr("id", newremoveurl); 
           $(this).remove(); 
          } 
         }); 
        }, 
        Cancel: function() { 
         $(this).dialog('destroy'); 
        } 
       } 
      }); 
     }); 
    } 

답변

0

방화 광에서 검사했을 때 데이터가 구조적으로 올바르지 않고 조작이 잘못되었을 수 있습니다. 예를 들어 모든 시작 태그에 일치하는 닫는 태그가 있는지, 즉 <td>이 실제로 <tr> 안에 있는지 확인할 수 있습니다. 그러나 반환 된 테이블 행을 확인 했습니까? 테이블에 추가되고 있습니까? 아약스가 행을 추가하기 전에 테이블에 적용된 스타일이 있습니까? (예 : jQuery 그리드를 사용하여 CSS 클래스를 추가하여 테이블을 예쁘게 만든다.) 이것이 도움이되지 않는다면, 행이 추가되기 전과 후에 firebug에서 테이블 html을 복사하고 질문을 수정하여 코드를 게시하십시오.

또한 파괴하기 전에 .dialog ('close')를 호출 할 수도 있습니다 (나중에 대화 상자를 다시 사용할 계획 인 경우에 따라 파괴하는 대신에). Close는 구성된 jQuery 효과를 사용하여 대화 상자를 시각적으로 닫고 필요한 이벤트 핸들러를 실행합니다. Destroy는 DOM에서 스타일 및 이벤트 핸들러를 실제로 제거하려고합니다 (핸들러를 사용하지 않고).

편집 : 다음은 테이블에 행을 추가하는 코드가 예상대로 작동하는지 확인하기위한 jsfiddle입니다. 그것은 나를 위해 작동하므로보세요 : http://jsfiddle.net/BenSwayne/ADsxU/

성공 처리기에서 $("#paymentplantable table tbody").append(data); 에 중단 점을 설정할 수 있습니까? 그러면 반환 할 데이터가 원하는 형식으로되어 있는지 확인할 수 있습니다. ("xml"이고 데이터 객체 안의 속성 안에 포함되어 있지 않습니까?)

+0

ok 대화 상자를 닫으려면 변경하고 이전과 이후에는 게시 할 것입니다. – Binaryrespawn

+0

안녕하세요, 나는 다른 편집을 만들었습니다. var content = $ (data) .find ('tr'); , jquery 개체가 만들어지고 직접 추가 할 수 없습니다. 아무것도하지 않고 첨부 된 데이트하는 사람이 잘못 형성되었을 수 있습니다. – Binaryrespawn

관련 문제