首页 新闻 赞助 找找看

关于AJAX获取JSON数据的问题

1
悬赏园豆:100 [待解决问题]

请问一下,我一个页面有几个AJAX获取JSON,而且是每秒执行一次,可是时间一长,读出来的JSON数据就会出现混乱,这是怎么回事呀,我用的jquery.ajax

问题补充:

比如说  a 和b 两个ajax获取json数据,a却获得了b的数据,b获得a的数据,乱套了

时间一长,这两个信息显示就不正常,然后用firebug查了一下,他们两个获取的json数据不对,两个乱掉了,请问各位大大,这到底咋回事啊

//这是第一个,用于实时更新节点树的状态
  var treeurl = '<%= Url.Action("GetTreeView","Main") %>';
jQuery.ajax({
type:
"post",
url: treeurl
+ "?num=" + Math.random(),
// async: false,
cache: false,
Date:
"json",
success:
function (TreeData) {
if (TreeData && TreeData.length > 1) {
d
= new dTree('d');
d.add(
0, -1, '实时监控');
for (var i = 0; i < TreeData.length; i++) {
var statico = "Green.gif";
switch (TreeData[i].NodeStatus) { //判断当前节点状态,选择图标
case "0": statico = "Green.gif"; break;
case "1": statico = "Yellow.gif"; break;
case "2": statico = "Orange.gif"; break;
case "3": statico = "Red.gif"; break;
default: statico = "Gray.gif";
}
var urls = '../NodeInfo/Display/' + TreeData[i].Id + '.aspx'; //Url
//添加子节点
d.add(TreeData[i].Id, TreeData[i].ParentID, TreeData[i].NodeName, urls, TreeData[i].NodeName, 'RightFrame', '../../Repository/Image/tree-images/' + statico, '../../Repository/Image/tree-images/' + statico);
}
document.getElementById(
"divtree").innerHTML = d;

}
}
})
//这是第二个,用于显示当前节点下的所有节点信息,有tooltip 大家可以略过哦
 var nodeurl = '<%=Url.Action("DisplayNodeInfo","NodeInfo",new { id=ViewData["NodeID"] }) %>';       
jQuery.ajax({
type:
"post",
url: nodeurl
+ "?num=" + Math.random(),
// async: false,
cache: false,
Date:
"json",
success:
function (NodeData) {
if (NodeData && NodeData.length > 0) {
document.getElementById(
"box").innerHTML = "";
for (var i = 0; i < NodeData.length; i++) {
var imagename = "";
var nodestat = "";
switch (NodeData[i].NodeStatus) {
case "0": nodestat = "正常"; imagename = NodeData[i].PicA; break;
case "1": nodestat = "一般告警"; imagename = NodeData[i].PicB; break;
case "2": nodestat = "重要告警"; imagename = NodeData[i].PicC; break;
case "3": nodestat = "严重告警"; imagename = NodeData[i].PicD; break;
default: imagename = NodeData[i].PicA;
}
//ToolTip提示信息
var titlecontent = [];
titlecontent.push(
"");
titlecontent.push(
" ");
titlecontent.push(
" ");
var value = NodeData[i].NodeValue;
if (value) {
value
= value.split("|");
for (var j = 0; j < value.length; j++) {
var valuekey = value[j].split("=");
if (valuekey[0] && valuekey[0] != "") {
titlecontent.push(
"");
}
}
}
titlecontent.push(
"
节点状态:" + nodestat + " 节点类别: " + NodeData[i].NodeType + "
节点编号:" + NodeData[i].Id + "节点名称:" + NodeData[i].NodeName + "
" + valuekey[0] + "" + valuekey[1] + "
");
adddiv(NodeData[i].Id, NodeData[i].XPosition, NodeData[i].YPosition, imagename, titlecontent.join(
'\n'), NodeData[i].NodeName);
}
jQuery(
'#tooltip').remove(); //要删除的
GetToolTip();
}
}
});
biubiubiu的主页 biubiubiu | 初学一级 | 园豆:114
提问于:2011-08-25 17:23
< >
分享
所有回答(8)
0

怎么个混乱?服务器器输出混乱?

慧☆星 | 园豆:5640 (大侠五级) | 2011-08-25 17:58
0

哥们你要把问题说明白啊。最好有截图。有源码片段

沐海 | 园豆:124 (初学一级) | 2011-08-25 19:22
0

是因为AJAX响应时间的问题!每秒执行一次的话。只要响应时间超过一秒了。JS对象一口气接受了不止一个返回值就会这样。建议想办法,获取好对象之后在等待1秒后再读取数据。可以通过一个全局变量给定时程序做判断。或者用其他办法。

梦怀天 | 园豆:222 (菜鸟二级) | 2011-08-26 13:33
0

用线程休眠一秒啊!

llllboy | 园豆:3 (初学一级) | 2011-08-26 14:53
0

你可以试着给每个ajax请求编个号,比如请求 {"data"="xxxxx",num=1},{"data"="xxxxx",num=2}...,然后服务器端把这个num返回,客户端的js就可以根据这个num找到相应的处理函数。

麦田里的守望者 | 园豆:428 (菜鸟二级) | 2011-08-26 16:21
这个挺靠谱的
支持(0) 反对(0) Virus-BeautyCode | 园豆:1619 (小虾三级) | 2011-08-28 21:35
也可以试试jsonp,jquery的jsonp默认callbackhandler是一个函数名后边加一个时间戳
支持(0) 反对(0) 麦田里的守望者 | 园豆:428 (菜鸟二级) | 2011-08-28 21:41
0

加Q: 1030365071,具体了解后,给你解答

know-more | 园豆:106 (初学一级) | 2011-08-27 12:55
0

希望可以说的更加详细一点,来点代码看看也更好

Virus-BeautyCode | 园豆:1619 (小虾三级) | 2011-08-28 21:36
0

ajax执行参数中加入一个变量 比如 new Date().toString()

shrimp liao | 园豆:135 (初学一级) | 2011-08-29 17:11
Date: new Date().tostring(), 是这样吗?
支持(0) 反对(0) biubiubiu | 园豆:114 (初学一级) | 2011-08-29 17:13
就是给你ajax 提交的参数中多加入一个参数,让它每次提交没有缓存
支持(0) 反对(0) shrimp liao | 园豆:135 (初学一级) | 2011-08-29 17:15
url: treeurl + "?num=" + Math.random(), 这样不对吗?
支持(0) 反对(0) biubiubiu | 园豆:114 (初学一级) | 2011-08-29 17:21
抱歉,开始我以为你的混乱是因为 缓存的关系
支持(0) 反对(0) shrimp liao | 园豆:135 (初学一级) | 2011-08-29 17:28
总之还是要谢谢你
支持(0) 反对(0) biubiubiu | 园豆:114 (初学一级) | 2011-08-29 17:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册