使用extjs ajax时为什么会出现JSON字符串解码错误?

时间:2015-09-16 07:16:49

标签: javascript ajax extjs

以下是我的代码..

Ext.Ajax.request({
            url:'test.jsp',
            params:{id:id,password:password},
            success:function(response){
                 console.log(response);
                 var results = Ext.util.JSON.decode(response.responseText);                     
                if(results.success){
                    document.location.href="../home.jsp";
                }
            }
        })  

我收到错误说:

Uncaught Error: You're trying to decode an invalid JSON String:

和console.log显示

Object {request: Object, requestId: 1, status: 200, statusText: "OK", responseText: "↵↵↵↵↵"…}

如果我将代码更改为 (我使用url传递参数):

Ext.Ajax.request({
            url:'test.jsp?id=' + id + '&password=' + password,
            success:function(response){
                 console.log(response);
                 var results = Ext.util.JSON.decode(response.responseText);                     
                if(results.success){
                    document.location.href="../home.jsp";
                }
            }
        })  

console.log将显示

Object {request: Object, requestId: 1, status: 200, statusText: "OK", responseText: "{success:true,msg:'success',url:'../main.jsp'}↵↵↵↵↵"…}

一切正常。

为什么会这样?

2 个答案:

答案 0 :(得分:0)

你可以将true传递给第二个参数,使其成为savemode。

// your code should like:
Ext.util.JSON.decode(response.responseText, true);

它不会解决您的问题,但删除错误。 你还需要检查你的json,确保它有效。

答案 1 :(得分:0)

空字符串不是有效的JSON。您可以运行JSON.parse(''),它会抛出异常。

如果您运行JSON.parse('{}'),那就没问题。