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