0

私は PHP と AJAX に関してはかなりの初心者なので、問題が発生し続けています。Web でアイデアを探した後、不足しているものにたどり着きました。1 つのメイン ページにコンテンツ (PHP/HTML の混合) を動的に読み込む方法を探しています。メイン ページにはナビゲーションが含まれ、このナビゲーション内のリンクがクリックされると、メイン コンテンツ div のコンテンツが変更されます。かなり単純なことですが、私はこのトピックに関して大きな苦労をしてきました.

私がこれまでに最も気に入った方法は、HTML5 History API を使用するCSS-Tricks Rethinking Dynamic Page Replaceing Contentです。ブラウザの戻るボタンと進むボタンを使用できるのは気に入りましたが、Chrome では機能しませんでした。

これは、「コードの何が問題なのかを教えてください」という典型的な質問ではないので、あらかじめお詫び申し上げます。ほとんどの場合、この問題の解決策を見つける最善の方法について少しアドバイスを求めています。

4

3 に答える 3

0

理解できるようにするための簡単な例を次に示します。

ナビゲーション リンクのクリックで ajax 呼び出しを行い、

<p id="test">CLICK ME</p>

<p id="result">Your result</p>

script タグ内の Ajax コードは次のとおりです。

$(document).ready(function() {  

$("#test").click(function(){

    $.ajax({
        url : 'testing.php',
        type : 'GET',
        async : 'true',
        cache : 'false',

        success : function(data, textStatus, xhr)
        {
            $('#result').empty().html(data);
        },
    });

});
});

注 : ajax 呼び出し URL は、php または html ページ、またはメイン ページ セクションに結果を表示するテキスト ファイルにすることもできます。

于 2013-02-12T07:04:32.890 に答える
0

これは AJAX で行うことができます。コンテンツ/ビュー/ページ アンカーを使用して、ロードするコンテンツを決定する必要があります。それを使用して、php からコンテンツをロードできます。

#hashコンテンツを決定するために使用する jQuery コードのスニペットを次に示しますhttp://example.com/#home$_POST['view']='home'

$(function(){
    // Detect hashchange (browser back/forward buttons)
    $(window).bind('hashchange', function() { 
      load_content();
    });
    // Init content
    load_content();
});

function load_content(){
    //get the hash
    var page = window.location.hash;
    page = page.substring(1);
    if(page == ''){
        page='home';
    }

    //get the content, replace any - with / so php can route to sub actions ect
    $.post("./", { 'view': page.replace("-","/") },
    function(data) {
        //load the content into the load container
        $("#load").html(data).fadeIn('slow');
    });
}

<div id="load"></div>

次に、次のコマンドを使用して、php 内でスクリプトへのルートを簡単に見つけることができます。

$route      = explode('/',$_POST['view']);
$controller = (!empty($route[0])) ? $route[0] : null;
$action     = (!empty($route[1])) ? $route[1] : null;
于 2013-02-12T06:57:39.917 に答える