Установить window.location.hash для вызова ajax - PullRequest
0 голосов
/ 01 февраля 2011

я верю, что это довольно простой вопрос.

Я делаю ajax-вызов с помощью jquery, и все, что мне нужно, это установить собственный хэш после вызова, подобного этому:

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

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

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

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

Спасибо.

Ответы [ 2 ]

6 голосов
/ 01 февраля 2011

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

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

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

1 голос
/ 01 февраля 2011

hash в URL для документов MDC :

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

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

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

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

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

...