Выбранный параметр не помещается в переменную post

Изменить: Спасибо за помощь всем, я изменил тему, так как я
обнаружил, что проблема была более специфичной для PHP.

Я новичок в jQuery и Javascript, и я создаю страницу с функцией поиска, которая требует, чтобы пользователь вводил регион для получения информации, специфичной для региона. В форму я включил выпадающее меню:

<select name="region" id="region">

<option selected="selected" value="na">NA</option>
<option value="euw">EUW</option>
<option value="eune">EUNE</option>
<option value="tr">TR</option>
<option value="lan">LAN</option>
<option value="las">LAS</option>
<option value="br">BR</option>
<option value="ru">RU</option>
<option value="oce">OCE</option>
<option value="kr">KR</option>
</select>

Даже если я пытаюсь выбрать другую область, отличную от области по умолчанию (NA), при отправке формы значение для переменной области $ _POST всегда остается равным ‘na’.

Также у меня есть скрипт для отправки формы:

 <script>
$(function () {
$('#myForm').on('submit', function (e) {

e.preventDefault();

$.ajax({
type: 'post',
url: 'redirect.php',
data: $('form').serialize(),
success: function () {
location.reload();

}
});

});

});
</script>

Моя форма:

<form id="myForm">
<li id="search">
<input type="text" name="name" id="name" placeholder="Search Word"/>
<input type="submit" style="position: absolute; left: -9999px; width: 1px; height: 1px;" tabindex="-1" />

<select name="region" id="region">

<option selected="selected" value="na">NA</option>
<option value="euw">EUW</option>
<option value="eune">EUNE</option>
<option value="tr">TR</option>
<option value="lan">LAN</option>
<option value="las">LAS</option>
<option value="br">BR</option>
<option value="ru">RU</option>
<option value="oce">OCE</option>
<option value="kr">KR</option>

</select></li>
</form>

redirect.php

<?php
session_start();

if (isset($_POST['name']) && isset($_POST['region'])) {
$_SESSION['name'] = $_POST['name'];
$_SESSION['region'] = $_POST['region'];

}
if (isset($_POST['name'])) {
$_SESSION['name'] = $_POST['name'];
$_POST['region'] = 'na';   // I think this is where the problem persists
$_SESSION['region'] = $_POST['region'];
}

?>

Кажется, что $ _POST [‘region’] не установлено.
Я включил session_start в обоих файлах.
Любая помощь будет оценена. Спасибо.

0

Решение

что я обычно делаю так:

$(document).on("change",function(){
if($("#region").val()!="na"){
var region=$("#region").val();
alert(region);
}
});

Благодаря этому вы сможете проверить, действительно ли значение меняется, и теперь вы можете использовать эту переменную где угодно.
И это будет работать каждый раз, когда значение меняется, пока вы не отправите
Надеюсь это поможет!

0

Другие решения

Попробуй это:

var $region = $('#region');
$region.val([]);//now $('#region').val() return undefined
//exacttext version
region.find('option').filter(function (index, elem) { return $(this).html() === textSearchValue; }).prop("selected",true);
//containstext version
region.find('option').filter(function (index, elem) { return $(this).html().indexOf(textSearchValue)>0; }).prop("selected",true);

PS: всегда кэшировать элементы в переменной $

0

Я написал быстрый CodePen для проверки того, что происходит в вашей проблеме, я не проверял с помощью запроса POST, потому что у меня нет вашего кода, но с jQuery все, что мне нужно было сделать, это удалить выбранный атрибут из NA:

http://codepen.io/leofontes/pen/ZBGZZZ

<select name="region" id="region">

<option value="na">NA</option>
<option value="euw">EUW</option>
<option value="eune">EUNE</option>
<option value="tr">TR</option>
<option value="lan">LAN</option>
<option value="las">LAS</option>
<option value="br">BR</option>
<option value="ru">RU</option>
<option value="oce">OCE</option>
<option value="kr">KR</option>
</select>

<button id="button">Something</button>

И JS:

$(document).ready(function() {
$("#button").click(function() {
alert($('#region').val());
});
});

Просто нажмите кнопку, чтобы увидеть, какая опция была выбрана, она работает. Не уверен на 100%, если это то, из-за чего вращалась ваша проблема, но я уверен, что это было так просто.

Надеюсь, это то, что вы искали, если не дайте мне знать, чтобы я мог помочь вам еще немного;)

0

Итак, я узнал, что я сделал не так …
Это было из-за маленькой ошибки в упорядочении условных выражений в redirect.php

if (isset($_POST['name'])) {
$_SESSION['name'] = $_POST['name'];
$_POST['region'] = 'na';   // Where I thought the problem persisted
$_SESSION['region'] = $_POST['region'];
}

Эта часть кода всегда будет выполняться даже после установки переменных $ _POST.
Я собирался запустить его, когда не было задано $ _POST для региона.
В результате я изменил это на следующее, и это работало.

if (!isset($_POST['region'])) {
$_SESSION['name'] = $_POST['name'];
$_POST['region'] = 'na';
$_SESSION['region'] = $_POST['region'];
}

Еще раз спасибо всем!

0
По вопросам рекламы [email protected]