1

我有一个服务器函数,它生成代表文件系统一部分的 JSON。

一旦用户从下拉列表中选择了一个项目,就会调用服务器函数。

到目前为止,一切都很好。

我的问题是如何仅在从服务器返回 JSON 数据时显示树?请让您的回答尽可能详细和完整,因为无论如何我都不是 javascript 专业人士!

4

2 回答 2

1

var serverFunctionComplete = false;
var x = serverFunction();
while(!serverFunctionComplete) {
//just waiting
}
setTimeout(function() {
serverFunctionComplete = true;//if the server doesn't respond
}, 5000);

这应该让你开始。

于 2013-03-04T20:34:22.017 回答
0

sync : true您可以使用xhr 对象中的属性使 ajax 请求同步。这会阻止其他代码执行,直到从服务器收到响应并且回调完成执行。

require(["dojo/request/xhr"], function(xhr){
  xhr("example.json", {
    handleAs: "json",
    sync: true
  }).then(function(data){
    // Do something with the handled data
  }, function(err){
    // Handle the error condition
  }, function(evt){
    // Handle a progress event from the request if the
    // browser supports XHR2
  });
});

但是,这通常不是最佳实践,因为异步加载是 javascript 和 ajax 的一大优点。建议在 xhr 的回调函数中显示您的树,这样您的脚本就不会因轮询响应而挂起。

require(["dojo/request/xhr"], function(xhr){
  xhr("example.json", {
    handleAs: "json"
  }).then(function(data){
    // Display your Tree!
  }, function(err){
    // Handle the error condition
  });
});

对于一般的异步线程管理,请参阅Dojo 的 Defered 类。

于 2013-12-06T19:25:03.223 回答