Jquery разбивает огромный массив на множество новых обратных вызовов при разборе
Я наткнулся на небольшую проблему.
Я возвращаю ответ JSON, который включает в себя массив байтов с 67615 элементами.
Теперь он добавляет
`[....,154,156,);jQuery1910039778258679286416_1363006432850(181,104,...]
каждые ~ 7300 символов
Теперь, когда я использую метод ajax для его анализа, как он работает нормально, он дает мне ошибку, потому что обратные вызовы аннулируют ответ
SyntaxError: missing] после списка элементов
..., 184,1,26,65,140,86,211,16,194,210,174,1); jQuery17203250109862964784_13639643449...
поэтому он больше недействителен
Я использую это для его анализа
$.ajax({
url : url,
cache : false,
dataType : "jsonp",
crossDomain : true,
success : function(root) {
console.log(root)
}
})
Может ли это быть проблемой с сервером asp, предоставляющим мне объект, или что-то не так с синтаксическим разбором?
Спасибо в Advance
EDIT1:
[WebMethod(Description = " ", EnableSession = true)]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public Borrower getSessionedBorrowerHeader(ref sysmessage aMessage)
{
if (!(userValidated(ref aMessage)))
return null;
BorrowerControl borrowerControl = new BorrowerControl(LOCALconnectionStringDb,
WEBconnectionStringDb,
STATSconnectionStringDb,
LIBconnectionStringDb,
CATconnectionStringDb,
LIBconnectionStringDb,
Session);
Borrower returnObj = borrowerControl.getSessionedBorrowerHeader(ref aMessage);
borrowerControl.Dispose();
return returnObj;
}
Если вам нужно больше кода, скажите мне, что я не в ASP: (
EDIT2:
http://pastebin.com/e3X2VKxY
Что делать:(
Вот ответ JSON
Ответы
Ответ 1
Это звучит как фактор, ограничивающий ASP. Это не специфично для jQuery, а для любого ответа JSON с сервера ASP. Я тоже видел это на серверах ColdFusion. Найдите этот параметр и посмотрите, соответствует ли предел вашему пределу, который вы нанесли. Посмотрите, можете ли вы увеличить его до того, что вам нужно.
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="x"></jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>
Если у вас нет доступа к настройкам сервера, вы также можете установить значение в своем коде. Вот ссылка MSDN для этого:
http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.maxjsonlength.aspx
Здесь также говорится:
Максимальная длина строк JSON. Значение по умолчанию - 2097152 символов, что эквивалентно 4 МБ строковых данных Unicode.
Это путь по вашей длине ~ 7300 символов. Но, возможно, кто-то изменил эту настройку.
Мне также любопытно, что вы видите "несколько" возвратов метода обратного вызова. Обычно, я думаю, этот предел просто усечет результат первого результата обратного вызова.
Может, у вас тоже есть что-то еще?
Ответ 2
В соответствии с документацией jQuery вы можете установить имя обратного вызова jsonp, чтобы сохранить байты в вашем случае: jsonpCallback
function J() { ... }
$.ajax({
url : url,
cache : false,
dataType : "jsonp",
jsonpCallback : "J",
crossDomain : true,
success : function(root) {
console.log(root)
}
})