JSONP и очень длинный ответ с экранированными символами

#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 — число.