IE 8 частично вырезал мой JSON-возврат данных из службы WCF - PullRequest
1 голос
/ 31 августа 2010

Я использую древовидную панель и пользовательский загрузчик дерева и вызываю запрос ajax, когда нажимаю на узел.Он отлично работает как в IE, так и в FF.

Но сегодня мы обнаружили, что если у узла есть только один дочерний элемент (возвращать только одну базу записей по идентификатору родительского узла), то IE не показывает дочерний узел.То же самое происходит и в Combo store, если сервис возвращает только один reocrd.

Очень интересно то, что я пытаюсь отладить с помощью Fildder.поэтому я должен поставить "."точка в моем URL "http://localhost{.}:1234/, тогда он отлично работает как для дерева, так и для комбо.

Вот возвращаемый формат JSON из FF и FireBug. Код:

{"result":[{"href":"..\/EMP\/EmployeeSearch.aspx","iconCls":"","id":"8c362443-7bb3-427e-910c-87b391c6abf5","leaf":true,"text":"Employees"}]}

Вот поврежденная JSON-строка для повторного запуска из IE с помощью инструмента разработчика. Код:

{"result":[{"href":"..\/EMP\/E"

My Override TreeLoader

Ext.override(Ext.tree.TreeLoader, {
requestData: function (node, callback) {
    if (this.fireEvent("beforeload", this, node, callback) !== false) {
        this.transId =
        Ext.Ajax.request({
            method: this.requestMethod,
            url: this.dataUrl || this.url,
            success: this.handleResponse,
            failure: this.handleFailure,
            scope: this,
            argument: { callback: callback, node: node },
            params: Ext.encode(this.getParams(node)),
            //jsonData: { node: node },
            headers: this.header || { 'Content-Type': 'application/json;charset=utf-8' }
        });
    } else {
        // if the load is cancelled, make sure we notify
        // the node that we are done
        if (typeof callback == "function") {
            callback();
        }
    }
}
  , processResponse: function (response, node, callback) {
      var json = response.responseText;
      /*added to remove result wrapper from JSON*/
      try {
          var obj = Ext.decode(json);
          var o = obj.result;
          node.beginUpdate();
          for (var i = 0, len = o.length; i < len; i++) {
              var n = this.createNode(o[i]);
              if (n) {
                  node.appendChild(n);
              }
          }
          node.endUpdate();
          if (typeof callback == "function") {
              callback(this, node);
          }
      } catch (e) {
          this.handleFailure(response);
      }
  }

});

1 Ответ

0 голосов
/ 31 августа 2010

Вы пытались удалить escape-символы или заменить их на Unicode?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...