仅限Opera:JSON.parse:未终止的字符串

时间:2012-06-20 06:04:31

标签: ajax json string parsing opera

仅在Opera中,我转到http://www.underfashion.nl/babys时会收到"JSON.parse: Unterminated string" 该字符串确实未终结,不以"]}结尾。

在其他浏览器(IE,FF,Chrome)中,它可以正常工作并接收整个字符串。

字符串很长:217529个字符。这可能是问题吗?其他浏览器接收以"]}

结尾的220374个字符

我已经尝试了3个AJAXways来获取数据,所有数据都与结果相同: 第一个:

var value = (function () {
     var val = null;
    $.ajax({'async': false, 'global': false, 'url': uf_urlsearch,
         'success': function (data) { val = data;
alert("Data Loaded: " + data.slice(-100) + "<br/>Numofchars: " + data.length);
         }
     });
    return val;
 })();

第二个:

$.get(uf_urlsearch, function(data){
alert("Data Loaded: " + data.slice(-100));
});

第三个:

uf_XMLHttpProductlist.onreadystatechange=function(){
  if (uf_XMLHttpProductlist.readyState==4 && uf_XMLHttpProductlist.status==200){
//Get the returned menu-items in Responsetext, expected to look like this:
  ...
  };//if (uf_XMLHttp.readyState==4 && uf_XMLHttp.status==200){
};//uf_XMLHttp.onreadystatechange=function()

uf_urlsearch = "http://www.underfashion.nl/php/get_productlist.php?"+uf_PHPsearchstring;
uf_XMLHttpProductlist.open("GET",uf_urlsearch,true);
uf_XMLHttpProductlist.send();
};

有人看到任何解决方案吗?

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:0)

要检查网络活动,请转到Opera菜单 - &gt;工具 - &gt;高级 - &gt;歌剧蜻蜓。然后在地址栏中输入网址。

在“网络”选项卡中,您可以看到资源列表。选择XHR按钮,您将看到get_productlist.php资源。值得一提的是,我的网站没有任何问题。 HTTP请求是:

GET /php/get_productlist.php?afdeling=babys HTTP/1.1 
User-Agent: Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; fr) Presto/2.10.289 Version/12.00
Host:   www.underfashion.nl
Accept-Language:    fr,en;q=0.9,en-US;q=0.8,ja;q=0.7,pt;q=0.6,de;q=0.5,zh-CN;q=0.4,es;q=0.3,it;q=0.2,nl;q=0.1,sv;q=0.1,nb;q=0.1,da;q=0.1,fi;q=0.1,zh-TW;q=0.1,ko;q=0.1,pl;q=0.1,pt-PT;q=0.1,ru;q=0.1,ar;q=0.1,cs;q=0.1,hu;q=0.1,tr;q=0.1,ca;q=0.1,el;q=0.1,he;q=0.1,hr;q=0.1,ro;q=0.1,sk;q=0.1,th;q=0.1,uk;q=0.1
Accept-Encoding:    gzip, deflate
Referer:    http://www.underfashion.nl/babys
Cookie: JSESSIONID=9ABC3B0357487E01298EBC7A02B5FDCD; __atuvc=1%7C25; __utma=137714676.906129982.1340200451.1340200451.1340200451.1; __utmb=137714676.1.10.1340200451; __utmc=137714676; __utmz=137714676.1340200451.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmv=
Connection: Keep-Alive
X-Requested-With:   XMLHttpRequest
Accept: */*

现在HTTP响应非常有趣:

HTTP/1.1 200 OK 
Date:   Wed, 20 Jun 2012 13:54:11 GMT
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By:   PHP/5.3.2-1ubuntu4.15
Vary:   Accept-Encoding
Content-Encoding:   gzip
Content-Length: 11469
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type:   text/html

然后是json的内容。你看到上面的HTTP响应有什么问题吗? YUP。

Content-Type: text/html

JSON的mime类型在RFC 4627中定义。请使用以下mime类型向JSON内容发送。

Content-Type: application/json

那就是说你在某些特定的URI上仍然存在问题(我没有)。你能分享哪一个吗?