9

ie では間違った URL を取得していますが、firefox と chrome では取得していません。

基本的に、テキスト検索と呼ばれるテキストフィールドがあります。ページを内部的にリダイレクトするために、htaccess で jQuery と rewriterule を使用しています。私は localhost にいて、すべてのファイルは test というフォルダーにあります。

firefox と chrome では、テキスト検索ボックスに「こんにちは」と入力し、Enter キーを押し、「こんにちは」と入力して Enter キーを押し、「さようなら」と入力すると、正しい URL が次のように表示されます。

ローカルホスト/テスト/テスト/こんにちは

ローカルホスト/テスト/テスト/こんにちは

ローカルホスト/テスト/テスト/さようなら

それぞれ。

つまり、あなたは得る

ローカルホスト/テスト/テスト/こんにちは

ローカルホスト/テスト/テスト/テスト/こんにちは

ローカルホスト/テスト/テスト/テスト/テスト/さようなら

それぞれ

ここでの問題は、'testing' が前に付いていることです。これがieで起こらないようにする方法。この問題に対する答えは、Web 上では見つかりませんでした。

html および jquery コード

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Untitled Document</title>


        <base href="http://localhost/test/" />
        <script src="jQuery.js"></script>
        <script>
            $(document).ready(function(){
                $("#text-search").keyup(function(e){
                    if (e.keyCode == 13){
                        window.location.replace("testing/"+$('#text-search').val());
                    }
                })
            })
        </script>
    </head>

    <body>
        <input type='text' id='text-search'>
    </body>
</html>

.htaccess

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^testing/(.+)$ /test/testing.php?string=$1 [L]

これについて私を助けてくれませんか。どうもありがとう

4

3 に答える 3

12

window.locationは文字列ではありません。そのように使用する場合は十分に注意してください。実際にはLocationオブジェクトです。

多分これはあなたを助けるでしょう:

var href = window.location.href;
window.location = href.replace(/testing\/.*$/, "testing/"+$('#text-search').val());

次のこともできます。

var href = "" + window.location;

文字列キャストを強制し、値渡しします。

于 2013-10-04T16:16:30.867 に答える