Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax IE 8从WCF服务返回的部分JSON数据_Ajax_Wcf_Internet Explorer_Json_Extjs - Fatal编程技术网

Ajax IE 8从WCF服务返回的部分JSON数据

Ajax IE 8从WCF服务返回的部分JSON数据,ajax,wcf,internet-explorer,json,extjs,Ajax,Wcf,Internet Explorer,Json,Extjs,我正在使用treepanel和自定义treeloader,并在单击节点时调用ajax请求。它在IE和FF中都运行良好 但今天我们发现,若节点只有一个子节点(根据父节点id只返回一条记录),那个么IE不会显示子节点。若服务只返回一个reocrd,那个么组合存储中也会发生同样的事情 非常有趣的是,我尝试用Fildder进行调试。所以我必须在我的url{.}:1234/中加上“.”点,然后它对树和组合都可以正常工作 下面是FF和FireBug返回的JSON格式。 代码: 下面是使用开发人员工具从IE重

我正在使用treepanel和自定义treeloader,并在单击节点时调用ajax请求。它在IE和FF中都运行良好

但今天我们发现,若节点只有一个子节点(根据父节点id只返回一条记录),那个么IE不会显示子节点。若服务只返回一个reocrd,那个么组合存储中也会发生同样的事情

非常有趣的是,我尝试用Fildder进行调试。所以我必须在我的url{.}:1234/中加上“.”点,然后它对树和组合都可以正常工作

下面是FF和FireBug返回的JSON格式。 代码:

下面是使用开发人员工具从IE重新运行的损坏JSON字符串。 代码:

我的超控树阅读器

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);
      }
  }
Ext.override(Ext.tree.TreeLoader{
requestData:函数(节点、回调){
if(this.firevent(“beforeload”,this,node,callback)!==false){
这个是transId=
Ext.Ajax.request({
方法:this.requestMethod,
url:this.dataUrl | | this.url,
成功:这是HandlerResponse,
失败:这个。手失败,
范围:本,,
参数:{callback:callback,node:node},
params:Ext.encode(this.getParams(节点)),
//jsonData:{node:node},
headers:this.header | |{‘内容类型’:‘应用程序/json;字符集=utf-8’}
});
}否则{
//如果取消加载,请确保我们通知您
//我们完成的节点
if(回调类型==“函数”){
回调();
}
}
}
,processResponse:函数(响应、节点、回调){
var json=response.responseText;
/*添加以从JSON中删除结果包装器*/
试一试{
var obj=Ext.decode(json);
var o=目标结果;
node.beginUpdate();
对于(变量i=0,len=o.length;i
}
);

您是否尝试过删除转义字符或用Unicode替换它们

{"result":[{"href":"..\/EMP\/E"
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);
      }
  }