#javascript #unicode #jsonp
#javascript #Юникод #jsonp
Вопрос:
У меня следующая проблема: я отправляю AJAX-запрос в службу, которая возвращает HTML-код. В этом коде есть символы Юникода, которые будут экранированы обычным u….
Проблема в том, что этот ответ очень длинный, и jQuery разбивает эти функции jsonp на несколько функций. Проблема не в этом, кроме того факта, что когда эти экранированные символы будут разделены внутри, как jsonp463827("...blabhalbhaud0");jsonp546114("0x8blablabla...");
Тогда, это выдает мне ошибку, в которой говорится, что ожидается шестнадцатеричный код, потому что он не может разделить эти экранированные символы.
Есть ли какое-либо решение, чтобы предотвратить это?
Ответ №1:
Что именно передается обратно? Пример адреса?
Я не думаю, что jQuery выполняет здесь разделение. По своей природе JSONP должен возвращать блок инструкций JavaScript для прямого выполнения в <script>
теге. Клиентская сторона не может получить доступ к этому контенту, чтобы разделить или иным образом обработать его, потому что это было бы проблемой межсайтового скриптинга, для решения которой и разработан JSONP.
Я думаю, вам, вероятно, нужно взглянуть на этот сервис. Я не уверен, зачем пытаться разделить ответ на несколько вызовов функций, поскольку нет ограничений на длину передаваемой строки. Предел, которого вы можете достичь, — это ограничение стека анализатора скриптов Firefox (см. Ошибку 420869), но это относится ко всему возвращаемому блоку скрипта, поэтому разделение на несколько вызовов функций не поможет.
Комментарии:
1. Вот в чем проблема, я проверял это несколько раз, сервис возвращает среднее значение. Строка размером 25 КБ, нерасщепленная. Я не могу опубликовать его здесь, потому что в нем есть значения, связанные с клиентом. Но эта строка определенно является одним jsonp(«…»); Но как только она попадает в jQuery, она разбивается на несколько функций в форме jsonpNNNNNN(«…»), где N — число.