2016-11-08 5 views
0

編集:問題がもっとPHPに特有であることがわかったので、私は を発見したので、助けてくれてありがとう。選択されたオプションがポスト変数に入れられない

私はjQueryとJavascriptの新機能です。ユーザが地域固有の情報を取得するために地域を入力する必要がある検索機能を備えたページを作成しています。私は、フォームは、$ _POST地域変数の値を提出しているデフォルト(NA)、以外の別の領域を選択しようとしても

<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」のままです。

また、私は、フォーム上のスクリプトを持って提出:

<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を含めました。 ご協力いただければ幸いです。ありがとうございました。

+1

あなたはJSを全く必要としません。ブラウザがそれを処理します。どのようにフォームを提出しますか? –

答えて

0

OPは質問のトピックを変更しましたが、参考のためにここにコードを残していますが、これ以上の回答ではありません。

あなたの問題で何が起こっていたのかをテストするためのクイックCodePenを作成しましたが、私はあなたのコードを持っていないのでPOSTリクエストでチェックしませんでしたが、

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

だけではない100%確かに、それは動作します..オプションが選択されたかを確認するには、ボタンをクリックします。

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:NAからこれがあなたの問題の周りを回っているなら、私はそれがとても簡単だと確信しています。

私はいくつかのより多くのあなたを助けることができるようにすることを知らせていない場合、これは、あなたが探していたものであると思います;)

+0

あなたのご意見ありがとうございました!私は選択した属性を削除しようとしましたが、何もしません:/私は私のフォームを私のフォーム送信コードで編集しました。私はそれがそれとは何かを持っていると思っています。私のフォームタグ内に、私はタイプ:テキストの入力タグを持っています。キーワードは、入力タイプです:サブミットし、その直後にセレクトメニュー。これらの要素の配置がフォーム提出に影響するかどうか知っていますか? – CSishard

+0

@CSishard個人的に私はSerialize()関数を使用しません。あなたのような状況を避けるために、通常は自分で入力して送信します。フォーム全体を追加できますか?おそらく、入力が正しく収集されないなどのエラーが発生している可能性があります。また、selected = "selected"属性を別のオプションに追加し、結果が変更されるかどうかを確認してください。 – leofontes

+0

ドロップダウンメニューが問題ではないことがわかりました。トピックを完全に変更しました。あなたがまだ私を助けることができるなら、それは素晴らしいでしょう:) – CSishard

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:いつもの要素をキャッシュあなたがなりますこれで

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

:$変数は

0

私は通常、やることはこれです値が実際に変更されているかどうかを確認し、必要に応じてその変数を使用できるようになりました。 これは、提出するまで値が変更されるたびに機能します これが役立つことを願っています![OK]を

+0

あなたがしたいことが例えば: – poucel95

+0

国を選択してください:彼らはアメリカを選択すると、別のドロップダウンは、米国からすべての州でいっぱいになりますあなたの国(あなたの場合は地域)を選択するとすぐにsubmitをクリックするのではなく、次のドロップダウンが自動的に記入されます – poucel95

+0

私はその中にあるIFの内部を意味しました$(ドキュメント).on( "change"、function(){}) – poucel95

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

もう一度おねがいします!

関連する問題