Intereting Posts
Поиск символа в определенном положении строки Отправлять электронные письма с использованием международного акцента и специальных символов Перезапись строки JSON – группировка ключей по значению в новый массив? Функция Php, чтобы определить, состоит ли строка из только буквенно-цифровых символов? Неустранимая ошибка: обратный вызов массива должен содержать индексы 0 и 1 Выполнить PHP-скрипт в работе cron Сортировка html-таблицы с href и php из базы данных sql если инструкция else Использование javascript history.back () не работает в Safari .. как мне сделать его кросс-браузер? Групповые группы и проектные операторы Часть 1: jQuery -> MySQL -> jQuery -> HTML запланировать электронное письмо в php Невозможно создать пример приложения с помощью Yii Framework Класс Doctrine \ Common \ Collections \ ArrayCollection не является допустимым сущностью или отображенным суперклассом Как успешно переписать старый код mysql-php с устаревшими функциями mysql_ *?

jquery $ .post пустой массив

Я использую 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/

что разумный путь?

$.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-трафик. Я бы узнал раньше, если бы сделал это.

 application/x-www-form-urlencoded 

Вот ваш ответ. Он публикуется, вы просто ищете переменные в массиве $ _POST. Вы действительно хотите $ _REQUEST. В отличие от имени, $ _POST содержит входные переменные, представленные в теле запроса, независимо от метода отправки. $ _GET содержит переменные, проанализированные из строки запроса URL-адреса. Если вам нужны только переменные, используйте глобальный $ _REQUEST.

Если вы ожидаете получать загрузки файлов, то вы хотите создать новый массив, включая содержимое $ _FILES:

$ arguments = $ _REQUEST + $ _FILES;

Я пробовал данную функцию у Оуэна, но также получил пустое предупреждение. Странно, но я заметил, что он выводит строку запроса и возвращает пустое предупреждение. Затем я снова отправлю, и он будет предупреждать о правильных значениях сообщений.

Также были указаны имена полей в html, используя атрибут id (как это было сделано в учебнике jquery, который я читал). Это не позволило сериализовать поля формы. Когда я переключил идентификатор на имя, он решил мою проблему.

В конце концов, я закончил с $ .ajax, так как сделал то, что искал.

У меня был случай, когда я использовал jQuery для отключения всех входов (даже скрытых, которые я хотел), перед использованием jQuery для отправки формы. Я изменил свой jQuery, чтобы отключить входные данные типа «кнопка», и теперь скрытые vars публикуются при отправке формы! Кажется, что если вы отключите скрытый ввод, его значения не будут отправляться с формой!

Изменен:

 $('input').attr('disabled',true); 

чтобы:

 $('input[type=button]').attr('disabled',true);