Сериализация и отправка формы с помощью jQuery POST и php
Я пытаюсь отправить данные формы с помощью jQuery. Однако данные не доходят до сервера. Не могли бы вы рассказать мне, что я делаю неправильно?
// FORM
<form id="contactForm" name="contactForm" method="post">
<input type="text" name="nume" size="40" placeholder="Nume">
<input type="text" name="telefon" size="40" placeholder="Telefon">
<input type="text" name="email" size="40" placeholder="Email">
<textarea name="comentarii" cols="36" rows="5" placeholder="Message"> </textarea>
<input id="submitBtn" type="submit" name="submit" value="Trimite">
</form>
Javascript:
Javascript Code in the same page as the form:
<script type="text/javascript">
$(document).ready(function(e) {
$("#contactForm").submit(function() {
$.post("getcontact.php", $("#contactForm").serialize()) //Serialize looks good name=textInNameInput&&telefon=textInPhoneInput---etc
.done(function(data) {
if (data.trim().length >0)
{
$("#sent").text("Error");
}
else {
$("#sent").text("Success");
}
});
return false;
})
});
</script>
И серверная сторона:
/getcontact.php
$nume=$_REQUEST["nume"]; // $nume contains no data. Also tried $_POST
$email=$_REQUEST["email"];
$telefon=$_REQUEST["telefon"];
$comentarii=$_REQUEST["comentarii"];
Не могли бы вы рассказать мне, что я делаю неправильно?
EDIT:
Проверено var_dump($_POST)
, и он возвращает пустой массив.
Странно то, что тот же самый код, проверенный на моей локальной машине, отлично работает.
Если я загружу файлы на своем хостинговом пространстве, он перестанет работать.
Я попытался сделать старомодную форму без использования jquery, и все данные верны.
Я не вижу, как это будет проблемой конфигурации сервера. Любые идеи?
Благодарю вас!
Ответы
Ответ 1
Вы можете использовать эту функцию
var datastring = $("#contactForm").serialize();
$.ajax({
type: "POST",
url: "your url.php",
data: datastring,
dataType: "json",
success: function(data) {
//var obj = jQuery.parseJSON(data); if the dataType is not specified as json uncomment this
// do what ever you want with the server response
},
error: function() {
alert('error handing here');
}
});
Возвращает тип json
EDIT: я использую event.preventDefault
, чтобы предотвратить отправку браузера в такие сценарии.
Ответ 2
Вы можете добавить дополнительные данные с данными формы
используйте serializeArray и добавьте дополнительные данные:
var data = $('#myForm').serializeArray();
data.push({name: 'tienn2t', value: 'love'});
$.ajax({
type: "POST",
url: "your url.php",
data: data,
dataType: "json",
success: function(data) {
//var obj = jQuery.parseJSON(data); if the dataType is not specified as json uncomment this
// do what ever you want with the server response
},
error: function() {
alert('error handing here');
}
});
Ответ 3
Вы проверили консоль, если данные из формы правильно сериализованы? Успешен ли запрос ajax? Также вы не закрыли цитату-заполнитель, что может вызвать некоторые проблемы:
<textarea name="comentarii" cols="36" rows="5" placeholder="Message>
Ответ 4
Вы смотрели в firebug, если POST или GET?.
проверьте отображение консоли.
Вставьте тест script:
console.log(data);
Вы можете увидеть ответ с сервера, если он что-то показывает.
Ответ 5
Проблема может быть в конфигурации PHP:
Пожалуйста, проверьте настройки max_input_vars в файле php.ini.
Попробуйте увеличить значение этого параметра до 5000 в качестве примера.
max_input_vars = 5000
Затем перезапустите веб-сервер и попробуйте.
Ответ 6
См. ответ из предыдущего сообщения. Чем вы можете использовать .post() или .get() для отправки сериализованных данных на сервер.
Преобразование данных формы в объект JavaScript с помощью jQuery
В любом случае, это очень запутывает вашу ситуацию, вызванную этим недостатком деталей.
Если вы используете веб-сервер (нелокальный), этот код может быть неправильным, если вы забыли настроить фактическую ссылку jquery. Я не знаю, даже если вы ссылаетесь на jquery на абсолютный путь или относительный путь!?
Ответ 7
$("#contactForm").submit(function() {
$.post(url, $.param($(this).serializeArray()), function(data) {
});
});
Ответ 8
Регистрация двух дней или пользователей, автоматически зарегистрированных "Shouttoday" ajax, когда они завершают регистрацию по форме.
var deffered = $.ajax({
url:"code.shouttoday.com/ajax_registration",
type:"POST",
data: $('form').serialize()
});
$(function(){
var form;
$('form').submit( function(event) {
var formId = $(this).attr("id");
form = this;
event.preventDefault();
deffered.done(function(response){
alert($('form').serializeArray());alert(response);
alert("success");
alert('Submitting');
form.submit();
})
.error(function(){
alert(JSON.stringify($('form').serializeArray()).toString());
alert("error");
form.submit();
});
});
});