0

スクリプトに問題があります。スペースバーで何かを入力すると、つまり:google map入力ボックスで変更されます:google+map嫌いなもの。また...私が再び提出するとき、それはもっとひどく台無しになります

<form name="input" action="" method="get">
Search: <input type="text" name="search">
<input type="submit" value="Submit">
  <div id="result"></div>
</form>

-

$('form').submit(function() {
    var form_data = ($(this).serialize());
    window.location.hash = form_data.replace('=','/');
    return false;
});

$(window).on('hashchange', function () {
    var values = window.location.hash.slice(1).split('/');
    $("[name=" + values[0] + "]").val(values[1]);
});

var values = window.location.hash.slice(1).split('/');
$("[name=" + values[0] + "]").val(values[1]);
4

2 に答える 2

1

ハッシュから値をエスケープするには、 decodeURIComponentを使用する必要があります。

$('form').submit(function() {
    var form_data = ($(this).serialize());
    window.location.hash = form_data.replace('=','/');
    return false;
});

$(window).on('hashchange', updateVal);

updateVal();

function updateVal() {
   var values = window.location.hash.slice(1).split('/');
   $("[name=" + values[0] + "]").val(decodeURIComponent(values[1]));
}
于 2013-03-13T17:40:26.990 に答える
0

この場合、FORMメソッド'GET'at<form name="input" action="" method="get">は使用しないでください。ここでのW3の推奨によると

1.3HTTPGETまたはPOSTを選択するためのクイックチェックリスト

次の場合にGETを使用します。インタラクションが質問に似ている(つまり、クエリ、読み取り操作、ルックアップなどの安全な操作)。次の場合にPOSTを使用します。インタラクションが注文に似ている、インタラクションがユーザーが認識できる方法でリソースの状態を変更する(サービスへのサブスクリプションなど)、またはユーザーがインタラクション。

GETでは、データはURIで送信され、URIにはないspacesため、問題が発生します。

ただし、これにGETリクエストを使用する必要がある場合は、decodeURIComponentを使用しdecodeURIComponent(values[1])て値をエスケープします

于 2013-03-13T17:51:04.677 に答える