Переменные формы, переданные через потенциальную проблему jquery - PullRequest
2 голосов
/ 24 февраля 2012

У меня есть форма для скрипта списка рассылки, который я пытаюсь заставить работать с ajax, чтобы форма могла обновляться без перезагрузки.С закомментированной частью jquery $ .ajax переменные формы отправляются в строку URL.

? Email = test% 40address.com & sub = sub & submit = Submit + Form

Мой вопрос: почему часть submit = Submit + Form существует, если это не так?t часть моей «строки данных», и это будет проблемой, когда дело доходит до обработки фактического сценария PHP?

Вот форма:

<form name="email_list" action="">

<p><strong>Your Email Address:</strong><br/>
<input type="text" name="email" id="email" size="40">
<input type="hidden" name="sub" id="sub" value="sub">

<p><input type="submit" name="submit" value="Submit Form" class="email_submit"></p>
</form>

и JQuery

$(function() {    
$('.email_submit').submit(function() { 

var email = $("input#email").val();  
            if (name == "") { 
            $("input#email").focus();  
            return false;
        }  
var sub = $("input#sub").val();  
            if (name == "") {  
            $("input#sub").focus();  
            return false;
        }       

var dataString = '&email=' + email + '&sub=' + sub;

//alert (dataString);return false;  
/*$.ajax({  
    type: "POST",  
    url: "mailing_list_add2.php",  
    data: dataString,  
    success: function() {  
        $('#display_block')                      
        .hide()  
        .fadeIn(2500, function() {  
            $('#display_block');  
        }); 
    }  
}); 
return false; 
});*/

}); 

Ответы [ 3 ]

2 голосов
/ 24 февраля 2012

Вы должны поместить обработчик отправки в форму, а не на кнопку, даже если это кнопка отправки.

<form name="email_list" action="" id="my_form">

Обновить javascript

$(function() {    
  $('#my_form').submit(function() { 
    ...
  });
});

Для сериализации всехвходы в строку можно использовать $("#my_form").serialize(), которая создает строку со всеми входами и их данными, готовыми к публикации:

var dataString = $("#my_form").serialize();

Также обратите внимание, что наличие атрибута name, определенного для ввода ввода, означает, чтоего значение будет отправлено также в форме.Если вам это не нужно, вы можете просто удалить атрибут name.

1 голос
/ 24 февраля 2012

Если вы позволите вашему ajax POST произойти, так как вы вручную создаете dataString, вы не увидите Submit =, однако, когда вы разрешаете ему отправлять 'обычно', вы видите его, так как кнопка отправки является вводом поле со значением.

С этим проблем не возникнет. Вы можете получить доступ к значению отправки точно так же, как и к любому другому значению POST $_POST['submit'], хотя я не уверен, зачем вам это нужно.

1 голос
/ 24 февраля 2012

Submit+Form - это версия Submit Form в кодировке Urlen.Поле submit отправлено, поскольку вы задаете атрибут name для <input type="submit" name="submit" ... />.Скорее всего, это не вызовет у вас никаких проблем (не говоря уже о том, чтобы не смотреть на ваш серверный код).

Кроме того, вы действительно должны указать атрибут method для <form>.Кажется, по умолчанию GET, поэтому поля формы добавляются в строку запроса.

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