2009-11-09 2 views
0

Эй, ребята, я работаю над «статусом» -Updater. Он работает, есть только одна проблема, после отправки статуса мне нужно вручную перезагрузить страницу, чтобы сценарий снова работал. Вы можете мне помочь? Вот код: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

Могу ли я пояснить, что в вашем обратном вызове 'success' (после POSTing to request.php), который вы затем хотите загрузить (GET), этот же request.php снова? Когда вы POST, есть ли какой-то ответ, с которым вы хотели бы иметь дело? (В настоящее время я не вижу, чтобы ответ использовался вообще.) – Funka

+0

Ну, файл «request.php» выглядит так (в момент!):

Erfolgreich eingetragen!
PHP-Part подходит. Я хочу достичь этого, если я нажму на кнопку отправки, работает jquery-код. Ну, это работает, но только ОДИН РАЗ. После первого нажатия кнопки отправки сценарий ДОЛЖЕН работать так же, как в первый раз. Но если я нажму кнопку «Отправить» во второй раз, ничего не получится. Во всяком случае: я хочу, чтобы скрипт работал так часто, как я нажимаю кнопку отправки ... Надеюсь, вы меня поняли. Мой английский не самый лучший ... (я немецкий ...) – 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), подождите несколько секунд, а затем снова исчезнете? (Ваш 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

СПАСИБО МНОГО! Оно работает! Спасибо! Я так счастлив! Я работаю над этими двумя днями ... Я просто новичок: S – Kaley

Смежные вопросы