Как получить Url Hash (#) со стороны сервера

попробуйте это: -

  <div class="controls col-lg-2 col-md-2 col-sm-2 col-xs-2">
        <span class="req"> *</span><label class="checkbox-inline" for="genderCBs"><input type="checkbox" class="gender" value="M" id="genderMale" name="genderCBs[]">Male</label>
        <label class="checkbox-inline" for="genderCBs"><input type="checkbox" class="gender" value="F" id="genderFemale" name="genderCBs[]">Female</label>
    </div>

    alert(4);
    var gender = '';
    if ($('#genderMale').prop('checked') === true){
    alert(5);
        gender = "M"
    }else{
    alert(6);
        gender = "F"
    }
131
задан Jonas 12 December 2011 в 22:41
поделиться

5 ответов

У нас была ситуация, когда нам нужно было сохранить хэш URL-адреса в задних частях сообщений ASP.Net. Поскольку браузер по умолчанию не отправляет хэш на сервер, единственный способ сделать это - использовать некоторый Javascript:

  1. Когда форма отправляется, возьмите хеш ( window.location.hash ) и сохраните его в скрытом поле ввода на стороне сервера. Поместите это в DIV с идентификатором « urlhash », чтобы мы могли легко найти его позже.

  2. На сервере вы можете использовать это значение, если с ним нужно что-то делать. Вы даже можете изменить его, если вам нужно.

  3. При загрузке страницы на клиенте проверьте значение этого скрытого поля. Вы захотите найти его по DIV, в котором он содержится, поскольку автоматически сгенерированный идентификатор не будет известен. Да, вы можете проделать здесь некоторые трюки с .ClientID, но мы обнаружили, что проще просто использовать оболочку DIV, поскольку она позволяет всему этому Javascript жить во внешнем файле и использоваться в общем виде.

  4. Если скрытое поле ввода имеет допустимое значение, установите его как хэш URL ( window.location.hash снова ) и / или выполните другие действия.

Мы использовали jQuery для упрощения выбора поля и т. д. ... в итоге получается несколько вызовов jQuery, один для сохранения значения, а другой для его восстановления.

Перед отправкой:

$("form").submit(function() {
  $("input", "#urlhash").val(window.location.hash);
});

При загрузке страницы:

var hashVal = $("input", "#urlhash").val();
if (IsHashValid(hashVal)) {
  window.location.hash = hashVal;
}

IsHashValid () может проверьте наличие « undefined »

132
ответ дан 24 November 2019 в 00:16
поделиться

Раздел RFC 2396 4.1:

Когда ссылка URI используется для выполнения действия извлечения с определенным ресурсом, дополнительный идентификатор фрагмента, разделенный от URI штриховкой (" # ") символ, состоит из дополнительной справочной информации, которая будет интерпретироваться агентом пользователя после того, как действие извлечения было успешно завершено. По сути, это не часть URI, но часто используется в сочетании с URI.

(добавленный акцент)

80
ответ дан 24 November 2019 в 00:16
поделиться

Вероятно, единственный выбор состоит в том, чтобы считать его на стороне клиента и передать, это вручную к серверу (ДОБИРАТЬСЯ/POST/AJAX). Отношения Artur

Можно видеть также, как играть с кнопкой "Назад" и историей браузера в Malcan

7
ответ дан 24 November 2019 в 00:16
поделиться

Поэтому браузер не передает ту часть к серверу, извините.

41
ответ дан 24 November 2019 в 00:16
поделиться

Только для исключения возможности Вы на самом деле не пытаетесь видеть фрагмент на ПОЛУЧЕНИИ/POST и на самом деле хотеть знать, как получить доступ к той части объекта URI, который Вы имеете в рамках своего серверного кода, это находится под контролем Uri. Фрагмент (документы MSDN).

3
ответ дан 24 November 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: