Я использую jQuery для отправки формы в файл php, простой скрипт для проверки данных пользователя.
var emailval = $("#email").val();
var invoiceIdval = $("#invoiceId").val();
$.post("includes/verify.php",
{invoiceId:invoiceIdval , email:emailval },
function(data) {
//stuff here.
});
Код PHP:
<?php
print_r($_POST);
?>
Я смотрю ответ в firebug, это пустой массив. В массиве должно быть хоть какое-то значение.
Я не могу понять, почему $_POST не работает в файле php. Firebug показывает, что сообщение содержит опубликованное содержимое, адрес электронной почты и идентификатор счета, но на самом деле в файле php ничего не получено.
Форма:
<form method = "post" action = "<?=$_SERVER['PHP_SELF']; ?>" enctype = "application/x-www-form-urlencoded">
Кто-нибудь знает, что он делает?
Благодарность
нашел это - http://www.bradino.com/php/empty-post-array/
что по разумному маршруту идти?






application/x-www-form-urlencoded
Вот твой ответ. Он публикуется, вы просто ищете переменные в массиве $ _POST. Что вам действительно нужно, так это $ _REQUEST. В отличие от названия, $ _POST содержит входные переменные, отправленные в теле запроса, независимо от метода отправки. $ _GET содержит переменные, извлеченные из строки запроса URL-адреса. Если вам просто нужны отправленные переменные, используйте глобальную переменную $ _REQUEST.
Если вы ожидаете загрузки файлов, тогда вы хотите создать новый массив, включающий также содержимое $ _FILES:
$ arguments = $ _REQUEST + $ _FILES;
$.post() передает данные в базовый вызов $.ajax(), который устанавливает application/x-www-form-urlencoded по умолчанию, поэтому я так не думаю.
ты можешь попробовать это:
var post = $('#myForm').serialize();
$.post("includes/verify.php", post, function(data) {
alert(data);
});
вызов serialize() захватит все текущие данные в form.myForm.
Меня укусила та же проблема, и я считаю, что решение, которое дает Оуэн, не подходит. Вы сами сериализуете объект, а jQuery должен сделать это за вас. В этом случае вы также можете выполнить $ .get ().
Я обнаружил, что в моем случае это было перенаправление сервера с / mydir на / mydir / (с косой чертой), которое сделало массив POST недействительным. Запрос был отправлен на index.php в / mydir
Это было на локальной машине, поэтому я не мог проверить HTTP-трафик. Я бы узнал раньше, если бы сделал это.
Такая случайная вещь вызвала у меня столько беспокойства ... спасибо за этот комментарий!
Вы абсолютно молодцы.
Я попробовал данную функцию от Оуэна, но тоже получил пустое предупреждение. Странно, но я заметил, что он выводит строку запроса и возвращает пустое предупреждение. Затем я отправлял снова, и он предупреждал о правильных значениях поста.
Также были установлены имена полей в html с использованием атрибута id (как это было сделано в учебнике jquery, за которым я следил). Это не позволило сериализовать поля моей формы. Когда я переключил идентификатор на имя, это решило мою проблему.
В конце концов, я выбрал $ .ajax, поскольку он сделал то, что я искал.
У меня был случай, когда я использовал jQuery для отключения всех входов (даже скрытых, которые я хотел) непосредственно перед использованием jQuery для отправки формы. Я изменил свой jQuery, чтобы отключить только ввод типа «кнопка», и теперь скрытые вары отправляются при отправке формы! Кажется, что если вы отключите скрытый ввод, его значения не будут отправлены вместе с формой!
Измененный:
$('input').attr('disabled',true);
к:
$('input[type=button]').attr('disabled',true);
Для меня это не имело значения. POST и REQUEST не работали. Я не уверен, в чем проблема, но сериализация (см. Выше), похоже, работает, и вместо этого я просто переключился на $ .get.