1

我正在 MVC2 中开发一个项目,我有一个控制器操作来响应返回 JSON 响应的 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 通常对属性有最大长度吗?

4

0 回答 0