$.ajax() обрабатывает мою закодированную строку URL

У меня есть закодированная строка URL, которую я отправляю на php через jQuery AJAX API, который автоматически декодируется и передается на сервер.

Звонок Аякса:

var requestXML = '<searchString>red%20ford%5BimpoundState%3Ain%5D</searchString>';
$.ajax({
 data: "query=" + requestXML,
 success: function(response)
 {
     //alerts <searchString>red%20ford%5BimpoundState%3Ain%5D</searchString>
     alert(requestXML);
 }
});

Проверка запроса в инструментах разработчика Chrome показывает, что он декодируетсяalt text

Я немного запутался, я немного читал об обработке данных jQuery, но я отключил это через {processData: false}, но не получил никаких результатов.

-Спасибо за любую помощь!

ОБНОВИТЬ:

Мой бэкэнд в настоящее время настроен на синтаксический анализ xml с закодированными значениями URL.

Нравится: <searchString>red%20ford%5BimpoundState%3Ain%5D</searchString>

Когда я прохожу data: {query: requestXML}, я получаю...

Это:%3CsearchString%3Ered%20ford%5BimpoundState%3Ain%5D%3C%2searchString%3E (URL-кодировка xml).

Настоящая проблема заключается в том, что когда я генерирую этот XML, я кодирую значения, но jQuery, похоже, декодирует их в запросе.


person Derek Adair    schedule 18.12.2010    source источник


Ответы (1)


Вы можете использовать data: {query: requestXML}, для передачи параметров, и они получат URL-адрес, закодированный jQuery.

Дело в том, что параметр прикрепляется к URL-адресу как есть, если он уже является строкой.

Цитировать

данные (Объект, Строка)

Данные для отправки на сервер. Он преобразуется в строку запроса, если это еще не строка. Он добавляется к URL-адресу для GET-запросов. См. параметр processData, чтобы предотвратить эту автоматическую обработку. Объект должен быть парой ключ/значение. Если value является массивом, jQuery сериализует несколько значений с одним и тем же ключом на основе значения традиционной настройки (описано ниже).

Поскольку вы используете метод GET, ваши параметры добавляются в строку URL. Затем декодирование происходит из браузера, а не из jQuery.

person Gabriele Petrioli    schedule 18.12.2010
comment
нет... я не использую метод get. хотя мой код не отражает этого (не все параметры ajax включены), я явно устанавливаю его для публикации в вызове ajax. - person Derek Adair; 19.12.2010
comment
@ Дерек.. хммм. Вы все еще используете {processData: false} ? - person Gabriele Petrioli; 19.12.2010