簡體   English   中英

如何僅使用javascript和HTML通過鏈接傳遞數據?

[英]How can I pass data through a link using just javascript and HTML?

我有一個網站,其中有一個名稱列表,單擊名稱時需要打開一個新頁面。 我需要此頁面來顯示單擊的名稱中的數據,因此我需要通過鏈接傳遞一些數據。 這可以用PHP完成,但是我可以只用HTML和Javascript嗎? 必須有一種無需服務器端邏輯即可處理動態內容的方法。

編輯:我想澄清一下,該網站的全部目的是以更簡化的方式使用現有網站的API。 我只想調整它們的設置,因此編寫服務器邏輯似乎過多,因為我不需要持久性數據(為此使用API​​)。 這個問題是關於我應該如何在此自定義前端的各個頁面之間傳遞API數據。

您可以這樣設置內聯的uri參數:

<a href="example.com?name=sarah"> Sarah</a>// add a '?' followed by any number of parameters in the format of 'key=value'

您可以使用問號來表示變量的開頭,然后可以添加任意數量的變量(有一個限制,但數量非常高)

example.com?key1=value1+key2=value2 ...

看一下這個方法:

您可以將查詢字符串中的數據傳遞為:

http://www.yourwebsite.com?name=關於

您可以使用此函數從查詢字符串獲取數據:

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

getUrlVars()函數將返回:

{
    "Name"    : "About"
}

現在,您可以使用javascript這樣的任何地方將其打印:

document.getElementById('p').innerHTML(getUrlVars()["name"]);

要么

document.write(getUrlVars()["name"]);

有一些選項,但是總的來說,您認為可以更改沒有服務器邏輯的服務器發送的消息是不合邏輯的。 服務器將使用什么邏輯進行更改?

但是,如果您要提供同一個頁面,而只是在頁面上更改名稱,您可以做的一件事就是使該頁面向下發送靜態內容,而無需在任何地方添加名稱,只需將

<span class='name-of-linked-user'></span>

名稱應出現的任何位置。 那時,讓john doe的鏈接轉到“ page.html?name = john%20doe”,然后向頁面添加一些靜態jquery。 http://www.jquerybyexample.net/2012/06/get-url-parameters-using-jquery.html復制以下代碼的get url參數代碼:

function GetURLParameter(sParam)
{
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) 
{
    var sParameterName = sURLVariables[i].split('=');
    if (sParameterName[0] == sParam) 
    {
        return sParameterName[1];
    }
}
}​

然后一個簡單的jquery循環遍歷靜態內容,使其變得“動態”

$('.name-of-linked-user').each(function(){
  $(this).text(GetURLParameter('name'));
});

暫無
暫無

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

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