JQuery的Ajax是否引用web.config中的maxJsonLength属性

时间:2017-11-20 08:14:53

标签: javascript jquery asp.net json web-config

在我的ASP.NET站点中,我使用Jquery AJAX在单击搜索按钮时从Web服务加载json数据(实际上是一个字符串):

$.ajax({
  type: "POST",
  url: url,
  data: JSON.stringify(parameterArray),
  contentType: "application/json",
  dataType: "json",
  success: function(response) {
    d = JSON.parse(response.d);
  }

当返回字符串变得太大时,页面停止响应。我必须转到web.config并添加此属性才能使网站正常运行:

<jsonSerialization maxJsonLength="2147483644"/>

以下是应用程序在将数据返回到浏览器之前如何处理search result

JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;
string strData = dService.searhforData(ipt);
List<Dictionary<string, object>> lRow = processData(strData);
string r = serializer.Serialize(lRow);
return r;

如果Json字符串太长,页面就停止响应,控制台窗口中没有任何错误。当我在.Net应用程序端进行调试时,serializer.Serialize(lRow);顺利完成并成功返回r,之后,页面上的加载图标一直在旋转。如果我在页面上按F5,则会显示搜索数据。

我的问题是,如果JQuery's Ajax引用最大json字符串长度的web.config,为什么我无法在互联网上找到有关此内容的任何信息?

1 个答案:

答案 0 :(得分:3)

我确信<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> TOTAL <div id="container"></div> <form action="" method="post"> <table id="tableid"> <tr> <th><b>Menu:</b></th> </tr> <tr> <th></th> <th>Item</th> <th>Price</th> </tr> <tr> <td><input type="checkbox" class="chkbx" name="item" value="27"></td> <td>Item1</td> <td class="">100</td> </tr> <tr> <td><input type="checkbox" class="chkbx" name="item" value="28"></td> <td>Item2</td> <td class="">200</td> </tr> <tr> <td><input type="checkbox" class="chkbx" name="item" value="29"></td> <td>Item3</td> <td class="">300</td> </tr> <tr> <td><input type="checkbox" class="chkbx" name="item" value="30"></td> <td>Item4</td> <td class="">400</td> </tr> </table> </form>可以处理的数据量有限制,但这与您的问题无关。

您的JSON.parse()文件包含要使用的设置服务器端。客户端上的JS与此无关。如果您需要修改该设置,那是因为您的ASP.Net代码产生的JSON响应时间超过了web.config默认设置所允许的时间。

如果在发出失败的请求后检查了浏览器控制台,您很可能会在响应中看到错误,引导您解决问题。