2009-11-09 2 views
0

안녕 얘들 아, 나는 "상태"- 업 파이터에서 일하고있다. 스크립트가 다시 작동하도록 페이지를 수동으로 다시로드해야하는 상태를 보낸 후에 작동하는 한 가지 문제가 있습니다. 나 좀 도와 줄 수있어? 코드는 다음과 같습니다.JQuery - 코딩 문제

<script language="javascript"> 
$(document).ready(function(){ 
    $("form#status_form").submit(function(){ 
     var s_autor = $('#s_autor').attr('value'); 
     var s_status = $('#s_status').attr('value'); 
     $.ajax({ 
      type: "POST", 
      url: "/admin/request.php", 
      data: "s_autor="+ s_autor +"& s_status="+ s_status, 
      success: function(){ 
       $('#show').load("/admin/request.php").fadeIn("slow", function(){ 
        setTimeout(function(){ 
         $(function() { 
          $("#show").fadeTo("slow", 0.01, function(){ 
           $(this).slideUp("slow", function() { 
            $(this).remove(); 
           }); 
          }); 
         }); 
        }, 2000); 
       }); 
      }, 
     }); 
     return false; 
    }); 
}); 
</script> 

그래서 제출 버튼을 클릭하는 빈도를 스크립트를 반복 할 수 있도록 코드하는 방법을 알고 있습니까? 그런데

, 여기에 HTML 형식의 :

<form id="status_form" method="post" action="request.php" onsubmit="return false;"> 
    <input type="text" id="s_autor" name="s_autor" value="<?= $user_id; ?>" style="display: none;" /><input type="text" id="s_status" name="s_status" value="Statusnachricht" /><input type="submit" value="" class="submit" id="status_submit" /> 
</form> 
+0

내가 '성공'콜백 ​​(request.php에 게시 한 후)에서이 동일한 request.php를 다시로드 (GET) 할 수 있음을 명확히 할 수 있습니까? POST 할 때 어떤 종류의 응답을 받고 싶습니까? (현재는 응답이 전혀 사용되지 않습니다.) – Funka

+0

글쎄, "request.php"파일은 다음과 같습니다 :

Erfolgreich eingetragen!
PHP 파트가 출시 될 예정입니다. 제출 버튼을 클릭하면 jquery 코드가 작동합니다. 음, 작동하지만, 단지 한 번. 제출 버튼에서 처음 클릭 한 후, 스크립트는 처음과 같이 작동해야합니다 (SHOULD). 하지만 두 번째로 제출 버튼을 클릭하면 아무 것도 작동하지 않습니다. 어쨌든 : 나는 스크립트가 종종 submit 버튼을 클릭하는 것처럼 작동하기를 원한다. 내 영어가 최고가 아니야 ... (독일인 ...) – Kaley

+0

제출 버튼을 클릭하면 PHP 페이지가 열리고 PHP 페이지가 즉시 나타납니다. (두 가지 요청/응답?) – Funka

답변

0

그것은 처음이 코드를 호출 한 후처럼 보이는, 당신은 #show 파괴하고, 따라서, 다음 번에, 더 이상 # 없다 보여 주다? 나는이 제대로 이해 해요 있는지 확인하기 위해 코드에 몇 가지 주석을 추가 할거야 :

success: function() { 
    // File has been successfully posted to request.php 
    // We are now going to GET the contents of request.php (ignoring any response from the previous POST) 
    // Also note, should probably put remainder of code in a callback to "load", so we can be sure it has had a chance to load!... 
    $('#show').load("/admin/request.php").fadeIn("slow", function(){ 
     setTimeout(function(){ 
      $(function() { 
       $("#show").fadeTo("slow", 0.01, function(){ 
        $(this).slideUp("slow", function() { 
         // Note! #show is being removed from the document here. It won't be available for future events. 
         $(this).remove(); 
        }); 
       }); 
      }); 
     }, 2000); 
    }); 
}, 

행운을 빕니다!

EDIT이 부분을 자세히 살펴보면 setTimeout 후에 문서 "준비 됨"이벤트가 생성되는 것을 확인했습니다.

나는 당신이 원하는 효과를 계산하려고합니다. 업로드가 끝난 후 (예 : #show div) 페이드 인을하고 몇 초 정도 기다렸다가 다시 페이드 아웃합니다. (slideUp은 페이드 아웃 된 요소에서 작동하므로 효과가 표시되지 않습니다.)

어때?

success: function() { 
    // File has been successfully posted to request.php 
    // We are now going to GET the contents of request.php (ignoring any response from the previous POST) 
    $('#show').load("/admin/request.php", function() { 
     $(this).fadeIn("slow", function() { 
      setTimeout(function() { 

       $("#show").fadeOut("slow", function() { 
        // don't remove #show. Just empty it for using again next time. 
        $(this).empty() 
       }); 

      }, 2000); 
     }); 
    }); 
}, 
+0

감사합니다. 그것은 작동합니다! 정말 고마워! 나는 그것에 대해 너무 행복해! 나는이 2 일에 일하고있다. .. 나는 단지 초보자 다 : S – Kaley