1

I have a simple jump menu that I found. It worked great untill I wanted it to go to a page with a "?" in the url. It strips out everything after the "?". So when I try to go to mywordpresspage/?id=1, the jump menu takes me to mywordpresspage/.

I don't know alot about jquery ... I mostly work with php.

Here is the code:

<script type="text/javascript" charset="utf-8">

$(document).ready(function() {
    $('.site_quick_jump').change(function(){
        if ($(this).val() != '') {
            $('#site_quick_jump_form').attr('action', $(this).val()); // 
            $('#site_quick_jump_form').submit(); // Go!
        }
    });
}); // doc ready

</script>  


<form id="site_quick_jump_form" method="get" action="">
  Browse Survey:&nbsp; 
  <select class="site_quick_jump">
    <option></option>
    <option value="mywordpresspage/?id=1">My WordPress Page 1</option>
    <option value="mywordpresspage/?id=2">My WordPress Page 2</option>
    <option value="mywordpresspage/?id=3">My WordPress Page 3</option>
  </select>
</form> 
4

3 に答える 3

2

わかりました。これには、Web上のパラメータの簡単な説明が必要です。リクエストを行うと、yuoは2つの方法でパラメータを送信できます。

  1. GET:パラメータはURLの一部として送信されます( "example.com/?foo=bar")
  2. POST:パラメータは「舞台裏で」送信されます( "example.com"、{foo:bar})

リクエストを送信するとき(つまり、あなたが$('#site_quick_jump_form').submit())、「?」の後に続くものを送信します。パラメータとしてURLに。

* * 編集 * *

考えられる解決策の1つは、POSTに切り替えることです:)これはOPで機能するように見えたので、他のオプションについては詳しく説明しませんが、次のようにすることもできます。

  • PHPコードを作成して、すべてのパラメーターを調べ、それらをURLに再アセンブルします。
  • JSコードでクエリ文字列(window.location.search)を分離し、別のフィールドとして送信するようにしました
于 2012-07-11T22:41:41.297 に答える
0

だから私は答えを見つけました、なぜそれがうまくいったのか分かりませんが、それはうまくいきました。action="get"をaction="post"に変更しました。

于 2012-07-11T22:41:56.697 に答える
0

オプションで変更するのがクエリ文字列のみの場合は、アクションをフォームにハードコーディングし、オプションを変更してクエリ文字列の値のみを指定することで、これを簡素化できます。

$(function () {
    $('.site_quick_jump').change(function () {
        if (this.value) {
            this.form.submit();
        }
    });
});
<form id="site_quick_jump_form" method="get" action="mywordpresspage">
    Browse Survey:
    <select class="site_quick_jump" name="id">
        <option></option>
        <option value="1">My WordPress Page 1</option>
        <option value="2">My WordPress Page 2</option>
        <option value="3">My WordPress Page 3</option>
    </select>
</form> 

説明:

フォームが送信されると、フォームの各要素名とそれに対応する値を で区切って結合することにより、フォーム データが作成され=ます。これらの名前と値のペアのそれぞれが と組み合わされて&、最終的なフォーム データが形成されます。

でフォームが送信されるとmethod="post"、そのデータが http リクエストの本文に詰め込まれます。その後、ユーザーがページを更新しようとすると、フォームを再送信しようとしているという警告が表示されます。ユーザーが戻るボタンをクリックしてページに戻ると、ページの有効期限が切れているという警告が表示されます。ユーザーにこれらの警告を表示させたくありません。

ただし、フォームが で送信されるとmethod="get"、フォーム データは URL の の後に追加されます?。対処すべき警告はありません。

于 2012-07-12T00:19:48.423 に答える