我正在循环中发送ajax调用。它仅适用于前两次迭代,之后抛出异常内部服务器错误500,描述为“ JSON请求太大而不能序列化 ”这里是代码:
<script>
var things = new Array();
var total = 0;
function Load() {
$.ajaxSetup({ cache: true, jsonpCallback: 'quranData' }); // define ajax setup
for (var counter = 1; counter < 4; counter++) {
(function (counter) {
setTimeout(function () {
$.getJSON("http://api.globalquran.com/surah/" + counter + "/quran-simple?jsoncallback=?", {
format: "jsonp"
}, function (Obj) {
$.each(Obj.quran, function (i, by)
{
$.each(by, function (verseNo, line)
{
var obj = new Object();
obj.surah = line.surah;
obj.ayah = line.ayah;
obj.verse = line.verse;
things.push(obj);
total++;
});
});
});
}, counter * 500);
}(counter));
}
return false;
}
服务器端:
[HttpPost]
public ActionResult DB_Rola(List<thing> things, int count)
{
return Json(new { IsSuccess = true });
}
请告诉我如何处理它?</ p>
答案 0 :(得分:1)
您必须在web.config中将maxJsonLength属性调整为更高的值才能解决此问题。
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483644"/>
</webServices>
</scripting>
</system.web.extensions>
或aspnet:MaxJsonDeserializerMembers
的更高值,
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
</appSettings>
如果这些选项不起作用,您可以尝试使用此线程中指定的JSON.NET创建自定义json值提供程序工厂。