ユーザーがナビゲーション リンクをクリックしたときに更新せずに JQuery を使用してページを更新するように Web ページを設定しています。私のページの基本的な構造は次のようになります。
<!DOCTYPE html >
<html>
<head>
<title><?php if(x($page,'title')) echo $page['title'] ?></title>
<script>var baseurl="<?php echo $a->get_baseurl() ?>";</script>
<?php if(x($page,'htmlhead')) echo $page['htmlhead'] ?>
</head>
<body>
<div class='main-container'>
<?php if(x($page,'nav')) echo $page['nav']; ?>
<div class='main-content-loading'><img src="/view/theme/zp/ajax-loader.gif" alt="Please wait..."></div>
<div class='main-content-container'>
<aside><?php if(x($page,'aside')) echo $page['aside']; ?></aside>
<section><?php if(x($page,'content')) echo $page['content']; ?>
<div id="page-footer"></div>
</section>
<right_aside><?php if(x($page,'right_aside')) echo $page['right_aside']; ?></right_aside>
<footer><?php if(x($page,'footer')) echo $page['footer']; ?></footer>
</div>
</div>
</body>
</html>
主なセクションは、PHP スクリプトを使用して埋められます。
ページを更新するために使用している JQuery 関数は次のとおりです。
$(document).ready(function() {
$('.nav-load-page-link').click(function() {
getPageContent( $(this).attr('href') );
hideNavMenu( '#' + $(this).closest('ul').attr('id') );
return false;
});
}
function getPageContent(url) {
var pos = $('.main-container').position();
$('.main-container').css('margin-left', pos.left);
$('.main-content-container').hide(0, function () {
$('.main-content-loading').show(0);
});
$.get(url, function(html) {
console.log($('.main-content-container').html());
$('.main-content-container').html( $('.main-content-container', html).html() );
console.log($('.main-content-container').html());
$('.main-content-loading').hide(function() {
$('.main-content-container').fadeIn(800,function() {
$('.main-container').css('margin-left', 'auto');
});
});
});
}
示されているように、コンソール ロギング コマンドがあります。これにより、GET 要求の結果を適用する前後の HTML を確認できます。
そのため、奇妙なことに、特に 1 つのページについて、URL をブラウザーのアドレス バーに入力して読み込むと、期待どおりに読み込まれます。しかし、JQuery 関数を使用してロードすると、HTML タグが文字化けして表示されます。たとえば、アドレス バーに URL を入力して読み込むと、次のようなフォームが表示されます。
<div id="connect-desc">Enter address or web location</div>
<form action="follow" method="post">
<input id="side-follow-url" name="url" size="24" title="Example: bob@example.com, http://example.com/barbara" type="text">
<input id="side-follow-submit" name="submit" value="Connect" type="submit">
</form>
</div>
JQuery関数を使用すると、次のようになります
<div id="connect-desc">Enter address or web location</div>
<form action="follow" method="post">
</form>
<input id="side-follow-url" name="url" size="24" title="Example: bob@example.com, http://example.com/barbara" type="text">
<input id="side-follow-submit" name="submit" value="Connect" type="submit">
</div>
または、アドレス バーに URL を入力すると、次のような画像リンクが表示されます
<a href="https://some-place" title="some-title">
<img src="https://img-loc" alt="">
</a>
JQuery関数で次のようになります
<a href="https://some-place" title="some-title">
</a>
<img src="https://img-loc" alt="">
なぜこれが起こっているのか、誰にもアイデアがありますか?