在我的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
,为什么我无法在互联网上找到有关此内容的任何信息?
答案 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
默认设置所允许的时间。
如果在发出失败的请求后检查了浏览器控制台,您很可能会在响应中看到错误,引导您解决问题。