2014-04-12 55 views
3

所以,我發現這種類似的要求依然存在,但海報回答自己與進入細節:需要做一個URL查詢字符串通過鏈路

Persistent URL query string throughout the entire site?

從本質上講,我有一個事件管理網站,我可以編輯HTML和JavaScript,但不是PHP。我正嘗試通過鏈接傳遞折扣代碼以用於聯屬網絡跟蹤。該系統已允許代碼在一個查詢中的形式進行傳遞:

https://www.example.com/reg/newreg.php?eventid=89335&discountcode=code

BUT

需要說明的是,該系統僅允許該人直接鏈接到所述登記處理時如上所示。由於沒有人會在沒有看到活動細節的情況下購買機票,這幾乎是無用的。主頁的地址是形式:

https://www.example.com/home/89335

但是當我嘗試追加& discountcode =代碼的地址,查詢字符串在點擊註冊鏈接,並前往註冊頁面丟失。

有關如何處理此問題的任何建議?

謝謝!

回答

2

您可以嘗試解析所有包含href的a-tags並使用javascript更新href。

如果你可以使用jQuery,你可以這樣做的(沒有經過充分測試,所以這不能直接工作,但你應該得到的方式來解決:))

,以便獲得url PARAM,你可以使用該解決方案從這裏:https://stackoverflow.com/a/5158301/2753126

function getParameterByName(name) { 
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search); 
    return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); 
} 

jQuery(document).ready(function ($) { 
    var persistedQueryParam = getParameterByName('discountcode'); 

    if (persistedQueryParam && persistedQueryParam.length > 0) { 
    $('a[href]').each(function() { 
     var elem = $(this); 
     var href = elem.attr('href'); 
     elem.attr('href', href + (href.indexOf('?') != -1 ? '&' : '?') + 'discountcode=' + persistedQueryParam); 
    }); 
    } 
}); 

只需用實際參數名稱取代「discountcode」字符串。

希望有所幫助。

最好的問候, 克里斯

更新:添加查詢字符串和 '?' /'&'處理。

更新2:從prop改爲attr。

更新3:從'param'名稱更改爲'discountcode'。

Uüdate4:加入長度檢查@ persistedQueryParam終於拿到了測試腳本的機會:)

+0

嘿克里斯,感謝您的回答。我可以使用jquery,但我只知道它最微小的一點。當你有機會時,你能澄清一些答案嗎?我可以看到它看起來像是針對頁面上的所有鏈接並添加了persistedQueryParam,但我不確定如何爲persistedQueryParam首先獲得正確的值。 – joshttbnew

+0

也,因爲我只有一些鏈接,這需要發生,我可以按課程目標?如:$('a.persist-link')。each(function()? – joshttbnew

+0

更新。是的,如果你可以通過使用css-class來縮小它,你應該這樣做。 – Chris

相關問題