2017-02-17 4 views
0

Рассмотрим следующую форму:Получить значения, представленные в PHP от формы

<form method="get" enctype="multipart/form-data"> 
    <input type="hidden" value="0" name="foo"> 
    <input type="checkbox" value="1" name="foo"> 
</form> 

При отправке формы, то URL ...?foo=0 будет предложено, если флажок не установлен. Если флажок установлен, будет запрошен URL ...?foo=0&foo=1. В PHP аргументы строки запроса переопределяют любые предыдущие аргументы с тем же именем, поэтому foo будет иметь значение 1 в скрипте PHP, обрабатывающем последний запрос.

Каков наилучший способ получить значение foo в скрипте PHP с использованием JavaScript, когда вы ничего не знаете о форме? Теоретически может быть произвольное количество входов с именем foo разных типов, и я хотел бы знать значение, которое foo будет иметь в скрипте PHP, обрабатывающем запрос, если форма была отправлена.

Как я понимаю, ответом является значение последнего активированного элемента ввода с именем foo. Под включенным я подразумеваю, что входной элемент не отключен и что он не является кнопкой (имя и значение кнопки не добавляются в строку запроса, если кнопка не используется для отправки формы) или флажок или переключатель без отметки.

Возможно, есть простой способ получить это значение с помощью jQuery?

Редактировать

Грузы людей предполагают, что переименовать входные элементы foo[] или аналогичный. Я думаю, я был недостаточно ясен, что на самом деле хочу, чтобы все входные элементы назывались foo и получали только одно из значений в скрипте php.

Мои вопросы - как определить, какое значение получит скрипт php, используя JavaScript.

+1

Почему ваши входы имеют одинаковое имя? Измените foo1 и foo2. –

+2

Вы пытались установить массив как имя? ('name =" foo [] "') – AymDev

+0

Я только хочу сохранить последнее включенное 'foo', поэтому все они должны быть названы' foo'. –

ответ

0

Вы можете сделать петлю на глобальной переменной $ _GET

foreach($_GET as $key=>$val) { 
    echo "key = $key , val = $val"; 
} 

, если у вас есть несколько входов с тем же именем, что вам нужно будет приложить [] к имени, так что вы можете получить все значения в виде массива

<form method="get" enctype="multipart/form-data"> 
    <input type="hidden" value="0" name="foo[]"> 
    <input type="checkbox" value="1" name="foo[]"> 
</form> 

получить значения в JQuery выполнить следующие действия:

$('input[name="foo[]"]').each(function(){ 
console.log($(this).val()); 
}); 

, если вы хотите только одно значение обув, но у вас есть несколько элементов с этим именем вам нужно изменить логику с помощью радио-кнопок

+0

Я хочу определить значение с помощью JavaScript, не отправляя форму. –

+0

измените атрибуты имени на массив как name = "foo [the_variable_name]", затем в php вы можете легко получить его через одну переменную – Akintunde007

0

использовать это:

<form method="get" enctype="multipart/form-data"> 
    <input type="hidden" value="0" name="foo[]"> 
    <input type="checkbox" value="1" name="foo[]"> 
</form> 

и в PHP, использование:

$params = $_GET['foo']; //params would hold array 

было бы хорошо использовать.

0

Это действительно плохой дизайн. Вы должны проверить состояние флажка в своем php (backend) коде.Избавиться от скрытого ввода:

<form method="get" enctype="multipart/form-data"> 
    <input type="checkbox" value="1" name="foo"> 
</form> 

и это в вашем коде PHP:

if (isset($_GET['foo'])) { 
    $foo = 1; 
} else { 
    $foo = 0; 
} 

Если вы хотите использовать JavaScript, вы можете попробовать это на форме представить:

var checkboxValue = $("input[name='foo']").prop("checked"); 

checkboxValue будет true или false в зависимости от статуса флажка.

Смежные вопросы