发送ajax调用时出错[内部服务器错误500]

时间:2013-12-22 19:07:30

标签: jquery ajax http-post

我正在循环中发送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>

1 个答案:

答案 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值提供程序工厂。