Javascript Jquery在解析时将巨大的数组拆分为许多新的回调
我偶然发现了一个小问题。 我得到一个JSON响应,其中包括一个包含67615个条目的字节数组。 现在,它增加了一个Javascript Jquery在解析时将巨大的数组拆分为许多新的回调,javascript,jquery,asp.net,arrays,json,Javascript,Jquery,Asp.net,Arrays,Json,我偶然发现了一个小问题。 我得到一个JSON响应,其中包括一个包含67615个条目的字节数组。 现在,它增加了一个 `[....,154,156,);jQuery1910039778258679286416_1363006432850(181,104,...] 每约7300个字符 现在,当我使用ajax方法解析它的正常工作方式时,它会给我一个错误,因为回调会使响应无效 SyntaxError:元素列表后缺少] …184,1,26,65140,86211,16194210174,1);jQuer
`[....,154,156,);jQuery1910039778258679286416_1363006432850(181,104,...]
每约7300个字符
现在,当我使用ajax方法解析它的正常工作方式时,它会给我一个错误,因为回调会使响应无效
SyntaxError:元素列表后缺少]
…184,1,26,65140,86211,16194210174,1);jQuery17203250109862964784_13639643449
所以它不再有效了
我用这个来解析它
$.ajax({
url : url,
cache : false,
dataType : "jsonp",
crossDomain : true,
success : function(root) {
console.log(root)
}
})
这可能是asp服务器给我对象的问题,还是解析有问题
提前谢谢
编辑1:
[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;
}
如果您需要更多代码,请告诉我im不进入ASP:(
编辑2:
怎么办:(
以下是JSON答案根据jQuery文档,您可以设置jsonp回调的名称,以在您的案例中保存字节:
jsonpCallback
function J() { ... }
$.ajax({
url : url,
cache : false,
dataType : "jsonp",
jsonpCallback : "J",
crossDomain : true,
success : function(root) {
console.log(root)
}
})
这听起来像是一个ASP限制因素。这不是特定于jQuery的,而是针对来自ASP服务器的任何JSON响应。我也在ColdFusion服务器上看到过这一点。找到此设置,看看您的限制是否与您达到的限制相关联。看看是否可以将其增加到您需要的程度
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="x"></jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>
如果您无权访问服务器设置,也可以在代码中设置该值。以下是MSDN参考:
它还指出:
JSON字符串的最大长度。默认值为2097152个字符,相当于4 MB的Unicode字符串数据
这远远超过了约7300个字符的长度。但可能有人调整了此设置
我还很好奇,您会看到回调方法的“多次”返回。通常,我认为,这个限制只会截断第一个回调结果的结果。
也许你还有别的事情要做?什么在生成JSON?这是在换行时发生的吗?JSON是由运行在这里的asp.net服务器生成的,如果我调用某个没有bytearray的对象,它工作正常,只是bytearray使它失败,即使数组只是普通数据。JSON由.net自己序列化使用ResponseFormat=ResponseFormat.JsonIt看起来ASP正在将响应分解为多个回调。您可以使用本机javascript发出jsonp请求并接收所有这些回调,但如果您想让jQuery处理它,就必须让它不要将其拆分。我不喜欢JS,否则我会使用它,因为我看不到任何操作使ASP不拆分的选项?您可能必须在此处共享一些ASP代码,以便任何人回答此问题。我怀疑这是否会将67k条目减少到7.3k字符或更少。如果您提供完整的JSON响应,或者至少是结构等效的内容?