2013-03-11 4 views
2

'buildtask'라는 이름과 ID를 가진 양식이 포함 된 대화 상자가 있습니다. 파이어 버그와 함께 그것을보고 완전히 형성됩니다. jquery 코드는 동일한 페이지에있는 다른 성공적인 대화 양식 제출과 동일합니다. 문제는 $(this).dialog("close"); 인 것으로 보입니다. 내가 주석을 작성하면 호출 된 Ajax PHP 스크립트가 데이터베이스를 업데이트하고 Firebug를 통해 볼 수있는 텍스트를 반향시키기 때문입니다. 물론 대화 상자는 화면에 그대로 있습니다.jquery가 게시물 데이터를 보내지 만 응답이 없습니다

주석 처리가 제거되면 데이터베이스 업데이트가 실패하고 방화 광에서 게시물 데이터가 표시되는 동안 응답 탭이 누락되어 크기가 0B로 표시됩니다.

$(this).dialog("close");function(data){ } 내에 옮기려고했으나 화면에 대화 상자가 남습니다.

질문의 모든 조합으로 Stackoverflow를 샅샅이 뒤졌지만 기쁨이 없었습니다. 6 시간 넘게이 작업을 망쳤습니다.

buttons: { 
       "Update": function() {$.post("ajax/udTManage.php", $("#buildtask").serialize(),function(data){alert("Here");}); 
        $(this).dialog("close"); 
       }, 
       "Cancel": function() { 
        $(this).dialog("close"); 

       } 
      }, 
      close: function() { 
       $("#buildtask").remove();      
       $('#tasker').submit(); 

      } 
+0

방화 광의 오류 탭에 오류가 표시됩니까? –

+0

오류가 나타나지 않았습니다. – user1533687

답변

1

당신은 당신이 요청을 전송 완료하기 전에 양식이 기각되지 않았는지 확인하기 위해 function(data){}$(this).dialog("close");를 이동해야합니다.

이벤트가 AJAX 호출에 의해 실행되었으므로 $(this)을 사용하면 대화 상자가 아니라 요청을 참조합니다.

따라서 당신은 그것의 ID로 창을 호출하고이 같은 수행해야합니다

$("#buildtask").dialog("close"); 그런 다음 그것을 작동합니다.

+0

고마워요. 실제로 그 코드는 원래의 Ajax 파생 형식을 필요로하는 포함 div의 하나입니다. 그것은 타이밍 문제를 분류했다. – user1533687

+0

답변으로 문제가 해결되면 동의라고 표시하십시오. –

0

닫기 함수의 코드는 업데이트 또는 취소를 클릭하면 실행됩니다. 업데이트를 클릭하면 #buildtask가 제거되고 udTManage.php가 실행되는 동안 #tasker가 제출됩니다.

프로세스를 알지 못하면 어디에서 실패했는지 판단하기가 어렵지만, #tasker를 제출하기 전에 udTManage.php에서 일어나는 일이 모두 완료되어야합니다. 그럴까요? 그렇다면 다음과 같이 문제를 해결해야합니다.

buttons: { 
    "Update": function() { 
     $.post(
      "ajax/udTManage.php", 
      $("buildtask").serialize(), 
      function(data) { 
       // anything here is executed AFTER udTManage.php is executed 
       $('#tasker').submit(); 
      } 
     ); 
     $(this).dialog("close"); 
    }, 
    "Cancel": function() { 
     $("tasker").submit(); // assuming you need to submit even when cancelling 
     $(this).dialog("close"); 
    } 
}, 
close: function() { 
    // This is executed the moment you click either button (because both buttons immediately call the dialog close method) 
    $("buildtask").remove(); // not sure why you might need this, though 
} 
+0

닫기에서 제거는 양식을 지우는 것입니다. 그렇지 않으면 값은 다음 사용으로 지속될 수 있습니다. 귀하는 Cancel에서 제출이 필요하지 않다는 점을 잘 알고 있습니다. - 호스트 페이지가 처리 된 항목을 반영하여 새로 고쳐 졌는지 확인하는 것은 테스트의 일부일뿐입니다. – user1533687

관련 문제