Jquery AJAX - 缩短了JSON属性

时间:2013-06-27 13:10:38

标签: json jquery asp.net-mvc-2

我正在研究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通常在属性上有最大长度吗?

0 个答案:

没有答案