我正在研究MVC2中的一个项目,我有一个控制器动作来响应一个返回JSON respose的jQuery AJAX调用。我的JSON中的一个属性非常长(可以是500k字符),并且在达到我的Jquery AJAX成功函数之后似乎被剪裁为最大长度为43676个字符。
我做了很多调试,据我所知,控制器正在将JSON正确传递给客户端。我可以在IE开发工具中捕获网络响应,并看到JSON仍然有效。但是一旦它到达我的JavaScript,其中一个属性就会缩短。
下面是一些示例代码,可以更好地解释一下。
/// MVC2 Controller action
public ActionResult MyAction()
{
/// Generate a simple object with a few properties
object response = GetResponse();
//make the return string max length huge
JavaScriptSerializer serializer = new JavaScriptSerializer { MaxJsonLength = Int32.MaxValue };
ContentResult result = new ContentResult
{
ContentType = "application/json",
Content = serializer.Serialize(response)
};
return result;
}
/// Example of the response object
class response
{
public string Property1;
public string Property2;
public string Property3;
}
/// jQuery AJAX call
$.ajax({
type: "POST",
url: "/Home/MyAction",
dataType: 'json',
success: function(results) {
//Accessing a JSOn property that comes after the long one still works fine
if(results.Property3 === 'Success') {
//Do something with one of the JSON properties
$('#MyDiv1').val(results.Property1);
//I get a JS error here because my HTML is invalid due to the string being clipped
$('#MyDiv2').html(results.Property2);
}
}
});
我已经简化了我的代码,试图明确这一点。我在Property2中有一个非常长的html字符串,但它缩短为43676个字符。我真的不确定此时发生了什么。令我困惑的是控制器操作似乎将正确的JSON传递给客户端,更令人困惑的是,长JSON属性(Property2)位于我的JSON中间,这是受影响的唯一值。如果JSON太长了,那么在我的long值之后的属性也不会丢失吗? jQuery AJAX或JSON通常在属性上有最大长度吗?