以不可读的格式回应

时间:2012-11-22 06:30:53

标签: javascript android cordova

var httpc = new XMLHttpRequest(); // simplified for clarity
        httpc.open("POST", url, true); // sending as POST
        httpc.setRequestHeader("Content-Type",
                "application/x-www-form-urlencoded");
        httpc.onreadystatechange = function() { // Call a function when the
            // state changes.
            if (httpc.readyState == 4 && httpc.status == 200) {
            //MY JSON RESPONSE  
                        alert(JSON.stringify(httpc.responseText));
            }
        }
        httpc.send(params);

上面的代码在android 4.0中工作正常,响应变为有效的JSON格式。 但是当我在android 2.3中运行相同的代码时,我得到了未知格式的响应,我的url和params对于两个android版本都是相同的。

2.3中的

我的回复是I�%&/m�{J�J��t�� $ @ IG#)* EVE F的@흼{{; N'\ fdlJ !???ɞ〜|“YQ〜里FN / T&放大器; 2U〜 )`UTH2Ϛ<} S_Yz:?%,oetvXE {VU VjBsFU〜pԶɢI2 [^ ISW _'

4.0中的

我的回复是 [{“email”:“”,“password”:“”,“user_id”:“”,“store_id”:“”,“消息”:“警告!,错误的电子邮件或密码请再试一次。”,“成功“:” 0" , “NICK_NAME”: “”, “magazine_genre_id”: “”, “magazine_genre_name”: “”, “newspaper_genre_id”: “”, “newspaper_genre_name”: “”, “OLD_PASSWORD”: “”,“NEW_PASSWORD “:”“,”mode“:”“,”languagecode“:”“,”URL“:”“}]在file:///android_asset/www/project.js:717

Logcat异常:语法错误:未定义时的解析错误:1

2 个答案:

答案 0 :(得分:0)

在我看来,你正在做相反的事情。

您希望将JSON字符串解析为对象,而不是从对象中提取JSON字符串,这是JSON.stringify()所做的。

使用JSON.parse()代替。此外,eval()可以完成这项任务,但速度很快且不推荐。

答案 1 :(得分:0)

您是否尝试将responseType设置为json。我只是从jquery使用它。如果您有任何疑问,请查看XMLHttpRequest

<强>答案
此SO帖子中提供了一些替代方案JSON Parsing works on Android 4.0 but not on Android < 4.0