2016-02-09 7 views
0

Я пытаюсь создать страницу «строитель», где пользователь может выбрать элемент из выпадающего списка и создать собственную страницу. У нас нет доступа к базе данных для этой информации, поэтому я хотел бы сохранить элементы в URL-адресе, чтобы URL-адрес мог быть отправлен по электронной почте или сохранен в электронной таблице, и сценарий будет «писать» страницу каждый раз кто-то обращается к нему (это только для макетов и целей доставки - не для производства).jQuery присоединяет теги к URL без обновления

Я попытался с помощью хэш (#), но когда я это делаю, это дает мне ошибку: Uncaught Error: Syntax error, unrecognized expression: #h=3&f=2

Я использую приравнивает знаки, чтобы определить, какой вариант объекта я ищу, который поэтому это создает проблему.

Когда я перешел на использование window.location.search и используя знак вопроса (?) В адресной строке, он работал нормально, но я не знаю, как изменить URL (с jquery/javascript), не обновляя страницу путь.

Я хотел бы, чтобы URL-адрес был как-то вроде www.sample.com/?h=1&f=2 или www.sample.com/#h=1&f=2. Затем, во время процесса «строительства», я хотел бы добавить все разные элементы и их варианты к URL-адресу, который делает что-то вроде window.location.hash = window.location.hash + "a=1"; или window.location.hash = window.location.search + "a=1";

Любые идеи?

+0

Возможный дубликат: http://stackoverflow.com/questions/3338642/updating-address-bar-with-new-url-without-hash-or-reloading-the -page – JazzCat

+0

Я изучал это, пытаясь понять, как получить этот URL-адрес и сохранить добавление – ntgCleaner

ответ

2

Этот способ должен работать.

var defaultState = { 
    current: window.location.pathname 
}; 

var requestParameters = [ 
    '?id=0', 
    '&id=1', 
    '&id=2' 
]; 

var path = window.location.pathname + requestParameters.join(""); 
window.history.pushState(defaultState, 'Title', path); 

Результат: http://example.com/?id=0&id=1&id=2

+0

Ahh, поэтому вы нажимаете идентификаторы в массив и соединяете их, чтобы сформировать строку. Я попробую это. Спасибо – ntgCleaner

+0

Работает красиво! Я немного изменил его, сначала нажав '?' В массив, а вместо добавления '&' в id в массиве, я присоединил их к '&' using. .join ("&");', который ставит усилитель между любыми идентификаторами – ntgCleaner

+0

Рад, что это было то, что вы искали, хорошо провели день. – JazzCat