AJAX-個別のファイルを使用せずにWebページの一部を再読み込みします
-
03-07-2019 - |
質問
タイトルは少しわかりにくいかもしれませんので、説明させてください。
ユーザーに関する情報、ユーザーができることなどを含むサイドパネルがあるWebサイトがあります。ユーザーがログインしていない場合、このサイドパネルはログインまたは登録のエリアになります。
これのコードは次のとおりです。
<?php
if($user->loggedIn)
{
?>
<!-- side-panel for logged in users here -->
<?php
}
else
{
?>
<!-- login/registration etc -->
<?php
}
?>
やりたいことは、ユーザーがAJAXでログインをクリックしたときにこのコードスニペットを再度ロードし、サイドパネルをログイン/登録から光沢のあるユーザーのみにスムーズに移行するjQuery効果(おそらくフェード)を使用することですパネル。
そのコードを別のファイルに入れて、AJAXを介してサイドパネルのdivにロードすれば、これを実行できることはわかっています...これは可能ですか?
解決
AJAXリクエストでページをロードし、サイドパネル以外のデータを削除することもできますが、何がポイントでしょうか?最良のオプションは、サイドパネルを独自のファイルに単純に分離することです。
ああ、それはそれを行う適切な方法と考えられるので、サイドバーを編集することなくサイドバーを編集できます。
他のヒント
必要なものを正しく理解している場合は、次の方法を試してください:
$.ajax({
type: "GET",
url: "url", // replace 'url' with your url
cache: false,
success: function(data){
alert($(data).find('#sidebar').html());
}
});
たぶん$ .load()または$ .get()で動作するでしょう。
サイドパネルを独自のファイルに保持することに反対する理由は何ですか?物事をよりモジュール化され整理された状態に保ちます。
コンテンツをファイルに保持することに本当に反対する場合は、AJAX呼び出しが行われるたびに、コンテンツをデータベースに入れてクエリを実行できます。
クエリ文字列パラメーターをページに渡し、それに基づいてページの部分的なレンダリング(サイドバーのみ)を実行できますか? 次に、通常のjquery / ajaxメソッドを使用して、クエリ文字列パラメーターを含めます。
$.ajax(function(){
url: MyPage.php?sidebar_only=true
ect...
})
別の呼び出しで実際のユーザーデータを取得する場合、2つのdivを使用できます。ユーザーパネルのhtmlを含むdivが非表示になります。ログインに成功したら、ログインdivを非表示にし、ユーザーパネルdivを表示します。 AJAXログインのデータを使用して、パネルのカスタム情報を入力します。 AJAXログインコールは、ユーザー名とユーザーが実行できる内容を入力するために必要な情報を返すと想定しています。これにより、ユーザーパネル全体のhtmlをプルする必要がなくなります。