0

この検索ボックスに何かを入力すると、jquery がクエリを準備し、場所をリダイレクトします。クエリ部分の準備はうまくいきますが、リダイレクト部分にはエンコードされたクエリに問題があります。ページは、リダイレクトの前にエンコードされたクエリを自動的にデコードします。

検索ボックスに「test1 test2 test3」と入力すると、encodeURIComponent() でクエリが test1%20test2%20test3 にエンコードされます。

これで、ページは自分自身を result.php+query にリダイレクトします。ここでの私の問題は、result.php?q=test1%20test2%20test3 ではなく、result.php?q=test1 test2 test3 にページが移動することです。

ここにコードがあります

 if($("#searchbox").val() != "")
 {
    var mq1 = encodeURIComponent($("#searchbox").val());
    var query = "q="+mq1;

 }

 alert(query);
 if(query!="")
 location = "result.php?"+query;

アラートの結果は q=test1%20test2%20test3 ですが、 result.php?q=test1 test2 test3 になります

編集:リダイレクトコードでencodeURIComponent関数を使用すると、うまく機能します。

 alert(query);
 if(query!="")
 location = "result.php?"+encodeURIComponentquery);

これらのコードは機能していますが、q= 部分もエンコードしています。

4

4 に答える 4

1

ブラウザがアドレスバーに表示されているだけかもしれませんtest1 test2 test3が、サーバーは正しい値を取得します。Firebug などのブラウザ開発ツールで確認することも、サーバーで確認することもできます。

于 2012-06-07T08:14:20.137 に答える
0

なぜそれを変更しないのですかresult.php?q=+encodeURIComponent(query)

于 2012-06-07T08:19:28.900 に答える
0

これはあなたが書いたもののバリエーションです-クエリを入力した後にEnterキーが押されるのを待ちます(フォームの送信メソッド内にあるかどうか、コードのコンテキストがわからないため):

$('#searchbox').keypress(function(e) {
   if(e.which == 13 && $(this) {
       $(this).blur();
       var mq1 = encodeURIComponent($(this).val());
       var query = "q="+mq1;
       window.location = "result.php?"+ query;
   }
});

これを使用して、次の URL を作成します。

result.php?q=multiple%20words%20in%20the%20url%20work%20fine

あなたのコードはほとんどそこにあったと思いますが、IF ステートメントを取り巻くロジックが問題を引き起こしていました。

于 2012-06-07T08:26:00.843 に答える
0

あなたはjQueryを使用しているので、これを書いてみませんか:

if ($("#searchbox").val()) {
    location = 'result.php?' + $.param({
        q: $("#searchbox").val()
    });
}
于 2012-06-07T08:23:44.807 に答える