簡體   English   中英

URL 上的加載頁面搜索僅適用於 index.php 表單提交。 -JS

[英]Load page on URL search works only from index.php form submission. -JS

我創建了一個頁面,當它在 URL 中找到單詞result時加載一個框,

提交表單后,它會在單獨的頁面上處理表單數據並重定向到它來自的 URL,並添加了result=name參數,例如

本地主機/文件夾/索引.php?result=name

或者

本地主機/文件夾/索引.php?page=page1&result=name

它應該與此 function 一起加載,並且僅當表單從明確的index.php頁面提交時才有效

<script>
  function loadpageFromhistory(nameInAdress, loadinto, page) {
            if (window.location.href.indexOf(nameInAdress) > -1) {
                $(loadinto).load(page);
            }
        };
    loadpageFromhistory("result", "#result", "form_handlers/result.php");

</script>

如果表單是從index.php?page=page1提交的,則該框不會顯示或會出現片刻

我用這個 function 加載“菜單”頁面:

  //load page on btn click
        function btnload(idbtn, loadinto, page) {
            $(idbtn).click(function() {
                $(loadinto).load(page);
            })
        }; 

  //btnload() & loadpageFromhistory() COMBINED
        function btnNavigationAndAdress(idbtn, nameInAdress, loadinto, page) {
            btnload(idbtn, loadinto, page);
            loadpageFromhistory(nameInAdress, loadinto, page);
        };

btnNavigationAndAdress("#page1btn", "page1", ".body", 'base/pages/page1.php')

URL 用這個改變,直接加到nav btns:

    /SEARCH PARAMS IN URL
function searchParameters_inUrl(url) {
    //add all reserved params on page load
    var params = new URLSearchParams(window.location.search);
    if (params.has("result") && params.has("page")) {

    var parameters_after_page = window.location.search.split('&');
    parameters_after_page.shift();


    parameters_after_page.forEach(function(d) {
        var pair = d.split('=');

        url.searchParams.append(pair[0], pair[1]);
    })
} else if (params.has("result")) {
    //get parameters
    var parameters_after_page = window.location.search;
    //convert to string
    parameters_after_page = parameters_after_page.toString();
    //remove the '?' mark
    parameters_after_page = parameters_after_page.substr(1, parameters_after_page.length);
    //split all parameters
    var splitted_parameters = parameters_after_page.split('&');


    // alert(splitted_parameters);
    splitted_parameters.forEach(function(d) {
        //alert(d);
        var pair = d.split('=');

        url.searchParams.append(pair[0], pair[1]);
    })
    var url = new URL(url);

}

}

// 這個函數被添加到導航 btns onclick="address(this)" / 以更新 url

function address(i) {
    val = i.value;

    var clean_url = window.location.href.split('?')[0];

    var url = new URL(clean_url);
    url.searchParams.append('page', val);



    searchParameters_inUrl(url);
    window.history.replaceState({}, document.title, url);

}



function addressIndex(i) {

    var clean_url = window.location.href.split('?')[0];

    var url = new URL(clean_url);

    searchParameters_inUrl(url);


    window.history.replaceState({}, document.title, url);

}

這里有什么問題?

更新好了,我終於明白了。 問題不在這里,我不知道那可能是什么。 我嘗試使用 ajax 表單提交加載此頁面,它的工作原理相同。 僅當表單從索引頁面提交時才加載塊。 任何線索?

我發現了問題。 我在索引頁面中有一個div.body ,在這個塊中我放置了結果塊, .body塊使用php include加載內容,因此每次加載另一個頁面時, .result塊被擦除。

希望你會注意到你把你的div放在哪里..

暫無
暫無

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

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