2011-01-31 3 views
0

Я верю, что это довольно простой вопрос.Set window.location.hash on ajax call

Я сделав AJAX вызова с JQuery и все, что я хочу, чтобы установить пользовательский хэш после вызова, подобный следующему:

window.location.hash = '?url=http://www.sitename.com'; 

но она возвращает символ # перед тем, что и я не хочу его

www.mysitename.com/#?url=http://www.sitename.com 

так что как удалить этот символ # и приложить чистый хэш без него?

спасибо.

+1

Вы хотите установить хэш без хэша? Это невозможно. Хэш является частью хэша, поэтому слово * hash * (на самом деле это идентификатор фрагмента, но никто, похоже, не заботится). (слишком много хэшей здесь ...) –

+0

до тех пор, пока есть слишком много * хэшей, но не слишком много гашиша ..;) – ThiefMaster

+0

@ThiefMaster:: D –

ответ

6

Вы не можете. Если вы хотите установить строку запроса (?something=something), вы должны установить ее (и тем самым вызвать перезагрузку страницы), изменив location.search (только строка запроса) или location.href - ничего не было AJAXish/Web2.0ish;)

Хэш - это клиентская часть после знака # и никогда не отправляется на сервер. Это чисто предназначено для целевых элементов страницы (например, <h2 id="something"> нацелен на хеш-код #something) и в настоящее время сохраняет информацию о состоянии в URL-адресе, чтобы кнопки взад-вперед продолжали работать в приложениях AJAX (хотя это в конечном итоге будет заменено HTML5 функция pushState).

Если вы все еще хотите использовать хэш, сделайте это в google-compatible way. В основном это означает, что вы должны использовать #!something в хеше, где something также может быть частью реального URL-адреса в классическом запросе (не AJAX).

+0

Или используйте API истории HTML5, позволяющий изменить URL-адрес без перезагрузки. Вы работаете в GitHub, ThiefMaster? – NikiC

+0

Нет, мне просто понравился октокат. О, и я упомянул историю html5 api (pushState()) – ThiefMaster

+2

+1 для octocat :) OCTOCAT FTW !!! –

1

hash в URL есть, за the MDC docs:

часть URL, который следует за символом #, включая символ #.

Обратите внимание, что символ # (который, как я полагаю, называется «значком фунта» в Северной Америке) обычно называется «хэш».

Вместо этого вы хотите установить window.location.search. Это:

часть URL-адреса, которая следует за? символ, включая? символ.

Обратите внимание, что это вызывает перезагрузку. Если вы этого не хотите, то вам нужно , чтобы использовать hash.