簡體   English   中英

AJAX + CSS頁面轉換

[英]AJAX + css page transitions

有人可以逐步解釋AJAX頁面轉換嗎? 我看到了很多解釋,但似乎找不到逐步解釋它的解釋。 我似乎無法理解這個概念。 可能類似於以下代碼? 甚至更簡單的方法也可以使用。

基本上,我想在單擊導航菜單鏈接時顯示一個新頁面,而不必重新加載頁面。 並可能在其中添加動畫。

另外,添加“錯誤”呼叫的意義是什么,它是強制性的嗎?

$(document).ready(function() {

    $("#pages-load-area #pages-container").load("./pages/" + initialPage);

    $("#header-navigation a").on("click", function() {

        var urlPageName = $(this).attr("href");

        $.ajax({
            type: "GET",
            url: "./pages/" + urlPageName,
            processData: false,
            crossDomain: true,
            cache: false,
            success: function(result, responseData) {
                $("#pages-load-area    #pages-container").html(result);
            },
            error: function(responseData, textStatus, errorThrown) {
                alert('AJAX failed');
            },
        });

        return false;

    });
});

AJAX不執行“頁面轉換”。 它對服務器執行異步調用,並運行返回函數或錯誤函數。 返回函數具有一個參數,服務器可以在該參數中向客戶端發送一些數據。 有了這些數據,您就可以做任何您想做的事。

如果服務器發送下一頁,並且您得到該結果,並且用結果替換了某些html,則可以使用此功能進行“頁面轉換”。 但是將概念分開是非常重要的,以便您了解正在發生的事情。

因此,如果您發送這樣的ajax請求:

    $.ajax({
        type: "GET",
        url: "./pages/sum",
        data: {
            a: 3,
            b: 4
        },
        success: function(result) {
            alert(result);
        },
        error: function() {
            alert('AJAX failed');
        },
    });

服務器響應為“ 7”。 然后,您的警報將顯示7。“數據”中存在的變量將從您服務器的GET范圍中可用。 我不知道您使用的是哪種服務器。 在PHP中將在$ _GET中。

將返回“ 7”的PHP頁面示例:

<?php
    return $_GET['a'] + $_GET['b'];
?>

另一個例子:

    $.ajax({
        type: "GET",
        url: "./pages/sum",
        data: {
            a: 3,
            b: 4
        },
        success: function(result) {
            $("input#result").text(result);
        },
        error: function() {
            alert('AJAX failed');
        },
    });

現在,一旦調用返回,則名為“結果”的輸入將在其中顯示“ 7”。

現在回到您的情況,您可以使用url: "./pages/" + urlPageName,但是您也可以使用:

    $.ajax({
        type: "GET",
        url: "./pages",
        data: {
            pageName: urlPageName
        },
        success: function(result, responseData) {
            $("#pages-load-area    #pages-container").html(result);
        },
        error: function(responseData, textStatus, errorThrown) {
            alert('AJAX failed');
        },
    });

根據您使用的服務器技術,這可能會使您的生活更輕松。 因此,在這種情況下,您只需將服務器返回給您的內容替換“#pages-load-area#pages-container”元素中的html。

還有一件事,此時您不需要:

processData: false,
crossDomain: true,
cache: false,

現在暫時不要理會它們,當您對ajax調用有了更清晰的了解時,請回到它們。

關於“返回假”,如果您從jQuery文檔中閱讀了頁面,則可能會注意到以下相關部分:

從事件處理程序返回false會自動調用event.stopPropagation()和event.preventDefault()“

這意味着,如果您說了一個div內的按鈕,並為該按鈕設置了onclick事件,該事件的功能以return false結尾,並且為div設置了onclick事件,那么當您單擊該按鈕時,div的onclick事件將不會因該錯誤而被解雇。 因此,您將只有一個onclick事件。

我希望我已經澄清了。 如果尚不清楚,請隨時詢問更多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM