[英]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.