2016-09-21 11 views
0

ユーザーが作成した投稿をフィルタリングするために使用する基本的なGETフォームがプロジェクトにあります。私は、フォームを送信すると、複数選択の入力から値がそうのようなURLに付加されます:フォーム送信時にカンマ区切りの複数選択値をURLに渡す方法

project.dev/?maps[]=1&maps[]=2&maps[]=3 

あなたが見ることができるように、値は3つの別々のキーと値のペアを経由してURLに渡されます...しかし、 URLに値を追加する方法を知りたい場合は、次の形式で入力してください。

project.dev/?maps=1,2,3 

ありがとうございます。

+0

フォームを表示する場合、それが役立つだろうが、現在の設定で、サーバー側で、あなたは '$ _GETで終わる必要があります['maps'] = [1,2,3] '$ _GET ['maps'] [1]'のような変数にアクセスしたくない理由がありますか? – DelightedD0D

+0

@ DelightedD0D私の質問は、URLを短縮し、不要なキー値のペアを削除する試みの多くですが、機能的にはうまく機能します。このフォームは、単一のselect入力と複数のselect入力を持つ基本的なGET形式です(http://pastebin.com/3EKCF6Bb)。 – Jack

+0

どのような理由でURLを短縮したいですか?フォームからPOSTメソッドを使用するだけで、URLから完全にパラメータを削除することができます – DelightedD0D

答えて

0

私はこれに対する解決策を見つけ、将来同じ問題を他の人が克服するのを助けることを希望しています。

HTML

<select id="region" name="region" multiple> 
    <option value="1">Region 1</option> 
    <option value="2">Region 2</option> 
    <option value="3">Region 3</option> 
</select> 

<select id="maps" name="maps[]" multiple> 
    <option value="1">Map 1</option> 
    <option value="2">Map 2</option> 
    <option value="3">Map 3</option> 
</select> 

<button id="search">Search</button> 

はJavaScript

<script> 
    $(function() { 
     $("#search").click(function() { 
      var params = {}; 
      var getSelect = ['region', 'maps']; 

      $.each(getSelect, function(index, value) {     
       var select = $('#' + value); 

       if (select.val() != '') { 
        var selected = select.val(); 

        if (select.attr('multiple')) 
         selected = selected.join(','); 

        params[value] = selected; 
       } 
      }); 

      if (!$.isEmptyObject(params)) { 
       var url = [location.protocol, '//', location.host, location.pathname].join(''); 

       window.location.href = url + '?' + $.param(params); 
      } 
     }); 
    }); 
</script> 
0

あなたが配列を送信しようとしているとすれば、Array.prototype.joinはどうですか?

var arr = [1, 2, 3]; 

console.log(arr.join(',')); 

// result: 1,2,3 
+0

これは実際にはソリューションの一部であるかもしれませんが、実際にはOPがデータを送信する方法単に値を結合する – DelightedD0D

+0

@ user3191461返信いただきありがとうございます、これは私が問題を解決するのを助けた。 +担当者 – Jack

関連する問題