Изменить: Спасибо за помощь всем, я изменил тему, так как я
обнаружил, что проблема была более специфичной для 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 в обоих файлах.
Любая помощь будет оценена. Спасибо.
что я обычно делаю так:
$(document).on("change",function(){
if($("#region").val()!="na"){
var region=$("#region").val();
alert(region);
}
});
Благодаря этому вы сможете проверить, действительно ли значение меняется, и теперь вы можете использовать эту переменную где угодно.
И это будет работать каждый раз, когда значение меняется, пока вы не отправите
Надеюсь это поможет!
Попробуй это:
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: всегда кэшировать элементы в переменной $
Я написал быстрый 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%, если это то, из-за чего вращалась ваша проблема, но я уверен, что это было так просто.
Надеюсь, это то, что вы искали, если не дайте мне знать, чтобы я мог помочь вам еще немного;)
Итак, я узнал, что я сделал не так …
Это было из-за маленькой ошибки в упорядочении условных выражений в 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'];
}
Еще раз спасибо всем!