отправить форму с помощью jquery и открыть в новом окне - PullRequest
3 голосов
/ 30 июля 2011

у меня есть одна страница с jquery и два текстовых поля

У меня есть одна кнопка со следующим скриптом

  <input name="text1" type="text" id="text1" />
   <input name="text2" type="text" id="text2" />

<A class="floatRight button buttonAction3" href="#" name="save" id="save">Send</A>

Я хочу, чтобы скрипт Jquery загружал send.php

при нажатии кнопки выше

и данные обоих текстовых полей будут отправлены в виде сообщения

и send.php откроется в новом окне с указанной шириной и максимумом

На самом деле я не хочу обрабатывать данные, используя $ .post.

я хочу открыть новое окно с

window.open()

, а затем откройте файл php в этом окне с данными публикации.

Спасибо

Ответы [ 2 ]

2 голосов
/ 30 июля 2011

Быстрый ответ на ваш вопрос - использовать форму и добавить к ней атрибут target = "_ blank", однако это не дает вам контроля ширины и высоты.

Однако,Я думаю, что вы должны изменить, как вы подходите к этой ситуации.Этот подход сделает расширение его огромной болью в заднице.Используйте s.jQuery может обрабатывать формы намного проще, чем произвольные элементы ввода по всей странице.

<form id="search" method="post" action="send.php">
  <input type="hidden" name="id" value="25">
  <input type="text" name="email" placeholder="bill@stackoverflow.com">
  <input type="submit" value="Send">
</form>

Теперь мы можем сделать:

  // Sweet, the form was submitted...
  $('#search').submit(function(e){

    // Let's get the form with jQuery...
    $form = $(this);

    // Now you can do things like...
    $.post( $form.attr('action'), $form.serializeArray(), function( result ) {
        // "result" will inclue whatever the script returns...
    });

    // If you really need to open up the new window the only way I can think of controlling the size is with a get request...
    window.open( $form.attr('action') + '?' + $form.serialize(), 'PopUp', 'width=100,height=100' );

    // Stop the browsers default behavoir from kicking in!
    e.preventDefault()


});
1 голос
/ 30 июля 2011
$(document).ready(function() {
    $("#save").click(function(e) {
        e.preventDefault();
        $.post("send.php", { text1 : $("#text1").val(), text2 : $("#text2").val() },
              function(html) {
                  // open new window here
              }
    });
});

Учитывая, что ваши элементы не заключены в форму, вышеприведенного должно быть достаточно. Объяснение:

  • Свяжите обработчик щелчка с кнопкой сохранения. Запретите действие по умолчанию для ссылки, используя e.preventDefault().
  • Разместите два значения текстовых входов, используя высокоуровневый ajax-метод jQuery $.post.
  • send.php получит массив $ _POST, который выглядит как array("text1" => "thetext", "text2" => "thetext")
  • Функция обратного вызова для $.post срабатывает после того, как сервер отправил ответ клиенту. Вот где вы захотите открыть свое новое окно.

Ссылка:

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