значение jquery отличается от фактического значения

#javascript #jquery #asp.net #asp.net-mvc

#javascript #jquery #asp.net #asp.net-mvc

Вопрос:

Я пытаюсь настроить защиту CSRF в asp.net mvc, но у меня возникли проблемы с Ajax. Это ошеломляет, почему.

Я использую встроенный токен mvc, который выглядит так на странице:

 <input name="__RequestVerificationToken" type="hidden" value="gnAeuskcQCq bjF5bSKg/wyed65M2XNedTPmvKu/ tzCe1GEmIhyeUnurdMgg0ORjfkCBjyOYe78WS6TdJaPSeECTl7w5yjzgwb6TSLjR74cYE4Bd4lJ9YgBGCTyYXur 39inD60jtQh7VciTlM2ap9/YLim/RSCNMxbrs KMZM=" />
 

Проблема в том, что когда я получаю значение с помощью jquery, оно отличается от того, что находится на странице. Поэтому, когда я делаю это:

 requestVerifStr = $(document.getElementsByName("__RequestVerificationToken")).val();
 

Я получаю это значение:

 X1WV xrlkKXYjmLZS OpPfjgeEPGjM/CjOSk0nKwV6iu3rCpHAo2XIDlJcX2ef4hBnK/BYrZw6xICQWqd8a7yJOjngDn1Yf7AKEl2uwLAtMXQQuRJkCzpq lOWVv1Jyuud6dEIRiaXT0koGDxycps9wQoXvvnMlF1/4G5LDp9Y0=
 

Я предполагаю, что jquery выполняет какое-то преобразование.

Комментарии:

1. Рассмотрите возможность фактического использования jQuery: $('[name=__RequestVerificationToken]').val()

2. Это не исправление, это предложение. Что касается вашего вопроса … разве это не фактическое значение? Это похоже на фактическое значение. Что вы видите в исходном коде?

3. Есть ли на странице более одной формы (несколько форм?): alert($(‘[name=__RequestVerificationToken]’).длина)

4. Похоже, здесь работает: jsfiddle.net/G88jG

5. Невозможно воспроизвести: jsfiddle.net/AUYPe

Ответ №1:

Казалось бы, существует несколько входных данных с name="__RequestVerificationToken" и .val() возвращает только первый результат.

Вот пример того, как это произойдет: http://jsfiddle.net/4qA9V /