选定的选项不会被置于post变量中

时间:2016-11-08 18:15:57

标签: php jquery post dropdown selected

  

编辑:感谢大家的帮助,我改变了话题,因为我   发现这个问题对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。 任何帮助,将不胜感激。谢谢。

4 个答案:

答案 0 :(得分:0)

OP改变了问题的主题,将我的代码留在这里仅供参考,但我完全清楚它不再是一个答案了。

我写了一个快速的CodePen来测试你的问题发生了什么,我没有检查POST请求,因为我没有你的代码,但是使用jQuery,我所要做的就是删除所选的atribute NA:

the downloads page

<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'];
    }

再次感谢大家!