#jquery #ajax #urlencode
#jquery ( jquery ) #ajax #urlencode urlencode #jquery #urlencode
Вопрос:
Я пытаюсь отправить ajax-вызов на сервер, который считывает вводимый текст от пользователя (это иврит в кодировке utf-8). Я использую что-то вроде этого:
my_url = some_url textinput
my_url = encodeURI(my_url)
Проблема, которую я вижу, заключается в том, что после encodeURI
функции часть на иврите выглядит так: מלון
(и это нормально). Затем я использую вызов jquery:
$.ajax({
url: search_url,
contentType: "application/json; charset=utf-8",
dataType: 'json',
error:errorData,
success:getSearchResults
});
и я вижу, что на сервере это выглядит так, как будто оно было закодировано снова, так что каждый знак «%» теперь равен % (представление знака процента в формате utf-8), и моя часть на иврите выглядит так:
%D7%9E%D7%9C%D7%95%D7%9F
(каждый «%» => % 25)
Я не смог найти никакого способа преодолеть это, надеюсь, вы сможете 🙂
Приветствую, Рой
Комментарии:
1. Если я правильно понимаю, вы кодируете параметры GET в фактическом URL. Есть ли причина не просто использовать
data
атрибут в ваших.ajax()
параметрах?2. Кроме того, есть ли причина, по которой вы должны кодировать его в первый раз? Похоже
.ajax()
, это может сделать это за вас.3. @nrabinowitz Что касается использования атрибута data, ну, я этого еще не пробовал и, вероятно, буду (у вас есть пример или оболочка, которую я копаю …?). Что касается вашего второго замечания, ну, я тоже попробовал это, но, похоже, просто объединение части на иврите с URL-адресом было неправильно закодировано.
Ответ №1:
Я думаю, что лучшим вариантом здесь является использование data
атрибута в .ajax()
параметрах. Я смоделировал версию здесь: http://jsfiddle.net/nrabinowitz/nmZra/1 /
$.ajax({
url: '/search_results/',
data: { search: text },
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: $.noop
});
Не существует отличного способа заставить jQuery отображать фактический запрашиваемый URL-адрес, но если вы посмотрите в консоли, такой как Firebug, вы увидите сообщение об ошибке (потому что это поддельный URL):
ПОЛУЧИТЬ http://fiddle.jshell.net/search_results/?search=בג»ץ למתמחים: חזרו להידברות עם האוצר 404 (НЕ НАЙДЕН)
Похоже, что он правильно кодирует текст на иврите, без проблемы с двойным кодированием, с которой вы столкнулись.