编辑:感谢大家的帮助,我改变了话题,因为我 发现这个问题对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'];
}
&GT?;
似乎没有设置$ _POST ['region']。 我在两个文件中都包含了session_start。 任何帮助,将不胜感激。谢谢。
答案 0 :(得分:0)
我写了一个快速的CodePen来测试你的问题发生了什么,我没有检查POST请求,因为我没有你的代码,但是使用jQuery,我所要做的就是删除所选的atribute NA:
<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%确定这是您的问题所解决的问题,但我很确定这很简单。
希望这就是你所寻找的,如果不是让我知道,那么我可以帮助你更多;)
答案 1 :(得分: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:始终将元素缓存在$ variable
中答案 2 :(得分:0)
我通常做的是:
$(document).on("change",function(){
if($("#region").val()!="na"){
var region=$("#region").val();
alert(region);
}
});
通过这个,您将能够检查该值是否实际发生变化,现在您可以在任何地方使用该变量。 并且它会在每次值发生变化时起作用,直到您提交为止 希望这有帮助!
答案 3 :(得分: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 for region时运行它。 结果,我将其更改为以下内容并且有效。
if (!isset($_POST['region'])) {
$_SESSION['name'] = $_POST['name'];
$_POST['region'] = 'na';
$_SESSION['region'] = $_POST['region'];
}
再次感谢大家!