При использовании javascript escape () отсутствуют параметры запроса в UTF-8 - PullRequest
0 голосов
/ 02 июня 2011

Я использую jquery ajax api для отправки (POST / GET) текста в качестве параметра на страницу обработки.

<input type="text" id="txtboxdata" name="txtboxdata" >

var dataString = "tmpVar="+ escape( $("#txtboxdata").val() );
$.ajax({ type: "POST", 
                  url: "processing.jsp",
                  data: dataString ,
                  dataType: "json",
                  success: function(){}
        });

//dataString holds the parameter and value to be passed. Value is retrieved from a text box.

Если текстовое поле

  • содержит символы UTF-8
    и
  • применить javascript "escape" к значению текстового поля

затем параметр tmpVar исчезает из объекта запроса на странице обработки (processing.jsp).

Я использовал отладчик и проверил объект запроса. Параметр под названием "tmpVar" никогда не появляется.

Это работает правильно, когда выполняются следующие условия
tmpVar появляется в объекте запроса processing.jsp, когда

  • нет символов UTF-8.
  • Я не применяю «escape» до вызова ajax.

Мой вопрос Я хотел бы понять, почему применение escape для текста, содержащего UTF-8, не отображается в объекте запроса?

PS: я использовал "form serialize ()" для решения проблемы, просто пытаясь понять, почему проблема возникла.

Firebug: выглядит хорошо, всегда отображается правильно. Нет пропущенных данных до фактического POST / GET.

Ответы [ 2 ]

1 голос
/ 02 июня 2011

Используя ответ, предоставленный @SLaks, провел еще несколько исследований и нашел удовлетворительный ответ.

Объясняет, почему не следует использовать escape, и сравнивает его с другим методом, который можно использовать.

  • encodeURIComponent ()
  • encodeURI ()

http://xkr.us/articles/javascript/encode-compare/

1 голос
/ 02 июня 2011

Вы должны позвонить encodeURIComponent вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...