在Ext.Ajax.Request之后发出解码JSON

时间:2016-03-07 12:18:34

标签: json ajax extjs

我正面临ExtJS 4.1.3的问题。 在我的ExtJS控制器中,我调用了一个像这样的ajax请求:

Ext.Ajax.request(
    {
        url: '/my/url/method.do'
        ,timeout: 1800000
        ,jsonData: param
        ,success:function(response)
        {
            var jsonData = Ext.JSON.decode(response.responseText);
            alert(jsonData);
            // some code
        }
        ,failure:function(response)
        {
            // some code
        }
        ,scope:this
    }
);

这是春天调用的方法:

@RequestMapping(value = "/my/url/method.do")
public @ResponseBody String method(Locale userLocale, @RequestBody Param[] param) {
    return "string" + "<br/>" + "string";
}

它适用于Google Chrome和IE浏览器,但不适用于Firefox。实际上,我收到以下错误:

Ext.Error: You're trying to decode an invalid JSON String: string<br/>string

而且我不知道它为什么不起作用,因为如果我在Firefox控制台中执行以下代码,它就会起作用:

Ext.JSON.decode("string<br/>string")

所以,如果有人能帮助我,我将不胜感激!

1 个答案:

答案 0 :(得分:0)

感谢您的回答。 此网站http://jsonlint.com/表示"string<br/>string"为有效的JSON字符串。但这是一个“错误的”JSON验证,因为它不是正确的JSON格式。 我解决了在控制器的produce="application/json"注释中添加@EequestMapping的问题。所以现在Ext.JSON.decode()甚至可以用于Firefox。

我还可以使用ajax请求发回一个可序列化的对象,然后解码响应以获取数据(包含我的字符串),因为Spring会自动将对象序列化为JSON。