0

ページ index.php に 3 つのリンクがあります。

<div id="languages">
    <a href="index.php?page=test&lang=en" id="flag">
        <img src="./images/flags/en.png" class="flag_off" alt="en" title="en">
    </a>
    <a href="index.php?page=test&lang=sk" id="flag">
        <img src="./images/flags/sk.png" class="flag_off" alt="sk" title="sk">
    </a>
    <a href="index.php?page=test&lang=cz" id="flag">
        <img src="./images/flags/cz.png" class="flag_on" alt="cz" title="cz">
    </a>                 
</div>

それぞれがlangパラメータを渡し、同じページ(index.php)上にあります。それから私は変数を持っています

$_GET['lang']

言語を変更するための関数を呼び出します:

$obj->change_language($_GET['lang']);

Q: index.php ページの URL にパラメータを表示せずに jquery get() 関数を使用してこれを行うにはどうすればよいですか?

(変数 $lang を jquery で渡します)

たとえば、関数を呼び出した後のパラメーターを含む URL は好きではありません。

index.php?page=test&lang=sk

ハンドラーとして .click() 関数を使用していると思います。

編集:

私はこのようなものを持っています:

$(document).ready(function(){
  $("#flag").click(function(){
      $.get('index.php',
         { lang: "VARIABLE LANG FROM HREF" }
     );
     });
  });

href index.php?page=test&lang= sk partからskを解析するには?

4

3 に答える 3

0
$(".flag").click(function(event) {
    event.preventDefault();
    $.get(this.href, function(data) {
        location.reload();
    });
});
于 2012-04-27T07:30:49.480 に答える
0

問題が URL のパラメーターである場合は、Ajax ( http://api.jquery.com/jQuery.ajax/ ) を使用して設定し、ページをリロードしてみてください。コンテンツも選択した言語に変更する必要があるため、更新を回避できないと思いますか?

于 2012-04-24T14:23:11.047 に答える
0

これを行う必要jQueryはまったくありません。次のようなことができます

<div id="languages">
    <a href="changeLanguage.php?lang=en">
        <img src="/flags/en.png" alt="en" title="en">
    </a>
    <a href="changeLanguage.php?lang=sk">
        <img src="/flags/sk.png" alt="sk" title="sk">
    </a>
    <a href="changeLanguage.php?lang=cz">
        <img src="/flags/cz.png" alt="cz" title="cz">
    </a>                 
</div>

次に、これchangeLanguage.phpで、$obj->change_language($_GET['lang']);(パラメーターの値をチェック/キャストする必要がある場所lang)を実行すると、次のような方法でユーザーをリファラーページにリダイレクトできます

$url = (string) $_SERVER['HTTP_REFERER'];
if (0 === strlen($url)) {
     // redirect to the home page if there is no referer
     $url = '/';
}
header('Location: '.$url);

Javascriptこのように、これにはコードは必要ありません。これはいくつかの点で重要だと思います:

  • AJAX ソリューションでは HTTP リクエストを 2 つではなく 1 つだけ実行します。
  • ユーザーがクリックすると、ブラウザはすぐに反応します。リクエストはクリックの直後に送信されるため、ブラウザの「読み込み中アイコン」は何かが起こっていることを示しています
  • アクション -> リアクションのこの効果は、ユーザー エクスペリエンスにおいて重要な要素です。
  • location.reload()AJAX ソリューションで使用される は、Would you like to submit the form again ?ユーザーがリクエストでこのページに到達したかのようにダイアログを表示することができPOST、そのアクション (言語の変更) とこの「エラー」メッセージとの関係を理解できない可能性があります。ユーザーエクスペリエンスも低下し、
  • 何らかの方法で壊れてJavascriptいる場合、言語を変更するページが言語のみを変更すると、それらのリンクがまったく機能しない可能性があります。このページの目的は言語を変更することだけなので、ページindex.php?page=test&lang=enが のようなことをしているとしましょう。$obj->change_language($_GET['lang']); exit;次に、何らかの理由で Javascript コードがトリガーされない場合 (コードが壊れている、ハンドラーがバインドされていない、ユーザーが新しいタブでページを開いた場合)、読み込まれたページは空白のページになります。このケースを処理すると、「言語の変更ページ」は通常のページのように見えますが、それは問題ありませんが、「完全な」応答で 2 つの HTTP 要求を実行することを意味します (1 つは言語を変更するためのもので、もう 1 つは言語を変更した後)。 ) 、location.reloadこれが最初のポイントにつながります。
  • 必要な場所でのみ使用Javascriptしてください:)

どう思いますか ?

于 2012-04-27T08:09:10.900 に答える