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 _'
我的回复是 [{“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
答案 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