0

ハッシュチェンジは

index.php

に変更します

index.php#my-hash

すなわち

$(window).bind('hashchange', function() {
  // do stuff
});

しかし、あるときのためのイベントはありますか?URLの後、つまり

index.php?id=foo&something_else=bar...

編集

さて、それは私がフォームを提出するときです。フォームを送信すると、URLが次のように変更されます

index.php?id=blah#my-hash

ただし、a)ハッシュ変更とb)フォームの送信をリッスンしてみました。

$('form').submit(function() {
        go_to_signup_form();
});

どちらも機能しません(ページが更新されていると思いますか?)。phpはcmsの一部であり、コントローラークラスなどで起こっていることを壊したくないので、あまり変更することはできません。そのため、次の場合に確認したいと思います。

index.php

に変更

index.php?id=blah#my-hash

編集#2フィードバックをありがとうございました。

if (url.indexOf("?") !== -1) {
    go_to_signup_form();
}
4

2 に答える 2

2

いいえ、それはパラメータ(?foobar)が通常クライアント側のコードに使用されないためです。同じURL()の新しいパラメータにリンクするとindex.php -> index.php?foo=bar、ブラウザは新しいページをロードしますが、ハッシュ(index.php -> index.php#foo=bar)を追加しても、ブラウザはサーバーにデータを送信しません。

URLのハッシュセクションであり、クライアント側のデータです。そのため、changeイベントリスナーがあると便利です。

まだURLにハッシュがないランダムなサイトで、コンソールでこれらを試してください。

window.location.href += "?test"

と:

window.location.href += "#test"

最初のものはページをリロードし(新しいHTTPリクエストを送信します)、2番目のものは何もしないように見えます。

フォームが送信されないようにするには:

$('#target').submit(function() {
    // Your onclick code here
    return false; // Do not submit.
});
于 2012-12-07T15:08:06.163 に答える
1

それに関する問題は、「ハッシュ変更」(技術的にはアンカーへのナビゲーションを意味します)が完全にクライアント側の操作であるということです。ただし、引数を含むURL(「?」演算子)は、サーバーへの新しいHTTP要求で満たされ、その結果、新しいドキュメントがユーザーに送信されます。つまり、ユーザーがリンクをクリックするindex.php?id=fooと、ページが再読み込みされます。

ただし、文字列を調べることで、ページがロードされたURLの引数を確認できwindow.location.hrefます。

于 2012-12-07T15:07:57.177 に答える