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/

что по разумному маршруту идти?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
0
29 095
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

application/x-www-form-urlencoded

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

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

$ arguments = $ _REQUEST + $ _FILES;

Для меня это не имело значения. POST и REQUEST не работали. Я не уверен, в чем проблема, но сериализация (см. Выше), похоже, работает, и вместо этого я просто переключился на $ .get.

Jake 29.05.2012 18:22
Ответ принят как подходящий

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

Такая случайная вещь вызвала у меня столько беспокойства ... спасибо за этот комментарий!

zenkaty 07.05.2015 04:32

Вы абсолютно молодцы.

spedley 04.05.2017 17:47

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

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

В конце концов, я выбрал $ .ajax, поскольку он сделал то, что я искал.

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

Измененный:

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

к:

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

Другие вопросы по теме