首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >难以解析responseText

难以解析responseText
EN

Stack Overflow用户
提问于 2012-06-22 12:36:15
回答 1查看 1.7K关注 0票数 1

我和你玩得很开心

  • Redis
  • Webdis
  • Dart

这是我写的

代码语言:javascript
复制
#import('dart:html');
#import('dart:json');

class ChatClient {
  XMLHttpRequest listener;
  int parsePosition = 0;

  void connect(){
    this.listener = new XMLHttpRequest();
    this.listener.open("GET", "http://i.target.co.uk:9005/subscribe/test.json", true);
    this.listener.setRequestHeader('Accept', 'application/json');
    this.listener.on.readyStateChange.add(handleData);
    this.listener.send();
  }

  void handleData(Event event){
    print(this.listener.responseText);
    /*
    if (this.listener.responseText != ""){
      Map data = JSON.parse(this.listener.responseText);
      print(data["subscribe"]);
    }
    */
  }
}

void main(){
  ChatClient client = new ChatClient();
  client.connect();
  document.query('#status').innerHTML = 'Loaded!';
}

问题是,每次我发布某件东西时,responseText的大小都会像这样

代码语言:javascript
复制
{"subscribe":["subscribe","test",1]}
{"subscribe":["subscribe","test",1]}{"subscribe":["message","test","e"]}
{"subscribe":["subscribe","test",1]}{"subscribe":["message","test","e"]}{"subscribe":["message","test","e"]}

现在你不能解析

代码语言:javascript
复制
{"subscribe":["subscribe","test",1]}{"subscribe":["message","test","e"]}{"subscribe":["message","test","e"]}

那我该怎么办?你能清除responseText吗?冲洗缓冲器?某物?

编辑:我知道您可以迭代整个字符串或跟踪每个json对象的长度,但是难道没有更干净的方法吗?

编辑:使用新的打印语句

代码语言:javascript
复制
readyStat: 2 status: 200
{"subscribe":["subscribe","test",1]}
readyStat: 3 status: 200
{"subscribe":["subscribe","test",1]}{"subscribe":["message","test","e"]}
readyStat: 3 status: 200
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-22 15:33:36

使用了最终解决方案。

代码语言:javascript
复制
  void connect(){
    this.listener = new XMLHttpRequest();
    this.listener.open("GET", "http://i.h.co.uk:9005/subscribe/test", true);
    this.listener.setRequestHeader('Accept', 'application/json');
    this.listener.on.readyStateChange.add(handleData);
    this.listener.send(); 
  }

  void handleData(Event event){
    try {
      Map data = JSON.parse(this.listener.responseText.substring(this.parsePosition));
      this.parsePosition = this.listener.response.length;
      var message = data['subscribe'][2];
      print("Recieved> $message");
    } catch (final e){
    }
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11156300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档