JQuery: данные POST + страница перенаправления не работает, как ожидалось - PullRequest
0 голосов
/ 16 октября 2010

Я пытаюсь отправить некоторые данные методом POST и перенаправить страницу. Но всякий раз, когда я нажимаю на кнопку отправки, jquery не загружается должным образом на новой странице. Я смог свести мою проблему к следующему коду. Например, если я нажму "отправить", будет загружена новая страница. Но кнопка Отправить не дает никакого ответа, и окно предупреждения не появляется.

<html lang="en">
<head>
<script type="text/javascript" src="{{ MEDIA_URL }}site/jquery-1.4.2.js"></script>
<script type="text/javascript">
$( document ).ready( function() {
  $('#submit').click( function() {
  alert("Submit button pressed" );
  $.post("/questions/submit/", 
    {qid:1, ans:"dummy" },
    function(data) {
       $('html').html(data);
    });
  });
});
</script>
</head>
<body>
    <a href="/accounts/logout">Logout</a>
    {{ section.qid }}
    <button id="submit">Submit</button> 
</body>
</html>

По-видимому, всякий раз, когда новые данные загружаются на страницу через jquery, сценарии и функции jquery не выполняются. Поэтому я должен сделать «обновление» на странице, и все работает отлично. Однако в функции post, если я изменю «html» на «body», submit работает просто отлично.

$('body').html(data);

Но на разных страницах могут быть разные файлы скриптов. Так что я не за то, чтобы делать это. Каким должен быть идеальный способ реализовать это, чтобы функции jquery загружались правильно?

PS: При проверке «источника страницы» я заметил, что старый раздел .qid присутствует в источнике страницы. Тем не менее, браузер отображает новый (и, по-видимому, правильный) section.qid. Я в тупике.

Ответы [ 3 ]

2 голосов
/ 16 октября 2010

Вы не можете перезагрузить все содержимое <html>, как это ... Вы все равно обновляете всю страницу (что-то вроде победы над AJAX), почему бы просто не использовать обычный <form> и обратную передачу?Это будет выглядеть так:

<html lang="en">
  <head></head>
  <body>
    <a href="/accounts/logout">Logout</a>
    {{ section.qid }}
    <form method="post">
      <input type="hidden" name="qid" value="1" />
      <input type="hidden" name="ans" value="dummy" />
      <button id="submit">Submit</button> 
    </form>
  </body>
</html>
0 голосов
/ 26 ноября 2012

При нажатии кнопки вызовите эту функцию () ниже и передайте параметр, в моем случае я передал новый сервлету

функция checkforNew () {

            jQuery.ajax({
                type: "POST",
                url: '<%=request.getContextPath()%>/MyController?&oper=new',
                //data: {'obj':data},
                dataType: "json",
                success: function(response){
                    window.location.href = response.redirect;
                }
            });
        }

Внутри сервлета необходимо указать следующий код для перенаправления страницы.

String destination = "/mypage.jsp;

            response.setContentType("application/json");
            JSONObject responsedata = new JSONObject();
            responsedata.put("redirect", destination);

            out.print(responsedata);
            out.flush();
0 голосов
/ 16 октября 2010

вы не перенаправлены на страницу, вы используете javascript для замены всего между тегами <html> и </html> после получения текста / HTML с другой страницы с помощью AJAX.

Браузерпредставление источника обычно показывает исходный источник страницы с момента ее первой загрузки.Любые изменения, сделанные вами после этого, не будут отражены здесь.Вы можете увидеть изменения, которые вы внесли в элементы на странице, если вы используете такой инструмент, как Firebug для Firefox или Firebug Lite для IE.

Причина, по которой все работает, когда вы заменяете содержимое внутри <body>, заключается в том, что ваши скрипты находятся за пределами <body> в теге <head>, который заменяется при использовании html

чемименно ты пытаешься сделать?Возможно, подробное объяснение сценария поможет нам лучше помочь вам.Что должно произойти после того, как ваша форма POST?

AJAX обычно используется, чтобы избежать обновления всей страницы или всего содержимого, вместо этого обновляя только те элементы на странице, которые необходимо изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...