0
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 和参数对于两个 android 版本都是相同的。

在 2.3 中,我的回答是。�<code>I�%&/m�{J�J��t��$ؐ@������iG#)�*��eVe]f@�흼��{���{�� ;�N'����?\fdl��J�ɞ!���?~|?"��?�YQ~�里F�������n���/������& ����2����u�~����)`�U��TH��2Ϛ<}S_��Y��z:%����,�o�e��tv� �X��E��{?v��U��V�j�B�s�FU�~�p�Զ�ɢ�i�2[^�i�S��W���_� ��'������

在 4.0 中,我的回复是 [{"email":"","password":"","user_id":"","store_id":"","message":"警告!,错误的电子邮件或密码请重试.","success":"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 异常: SyntaxError: Parse error at undefined:1

4

2 回答 2

0

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

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

请改用 JSON.parse()。eval() 也可以完成这项工作,但速度慢且不推荐使用。

于 2012-11-22T06:42:07.203 回答
0

您是否尝试responseTypejson. 我只在 jquery 中使用过它。如果您有任何疑问,请检查此XMLHttpRequest

回答
此 SO 帖子中提供了一些替代方法JSON Parsing 适用于 Android 4.0 但不适用于 Android < 4.0

于 2012-11-22T07:06:45.050 回答