DWR对javascript变量的响应

DWR response to javascript variable

本文关键字:响应 变量 javascript DWR      更新时间:2023-09-26

我几周前就要求过这个,但没有人帮我。

这对我来说是一件非常重要的事情,但它仍然没有任何有效的解决方案。

在ViewDwr中,我有一个简单的方法,通过给定的Id检查一些数据,并将状态返回为布尔值。在javascript(jsp文件)中,我有这样的东西:

      ViewDwr.checkData(id, function(data) 
        {
            document.getElementById("status").innerHTML=data;
        });

而且效果很好。问题是我需要将数据放入变量中。类似于:

      var currentDataStatus;
      ViewDwr.checkData(id, function(data) 
            {
                currentDataStatus=data;
            });
      alert(currentDataStatus);

但在这种情况下,它不起作用。我尝试了它的任何组合,但我找不到任何可行的解决方案来将resposne值放入变量并在其他函数中使用它。

有人能帮我吗?

感谢

这是不起作用的,因为它是异步处理。稍后,当服务器返回结果时,将调用您的function。在这一点上,你的背景早已不复存在。

当异步编程时(如wih DWR),您必须从特定的处理顺序中抽象出来。在回电话中思考(好吧,我不会从这里开始谈论承诺等)。比如,"当结果出来时,应该发生什么"。

在您的第二个样本中,这将类似于:

ViewDwr.checkData(id, function(data) 
{
  alert(data);
});

为什么你需要一个变量?如果这是一个全局变量,这无论如何都不是一个好主意。否则,请考虑将其作为某个对象中的属性。

var myObject = {};
ViewDwr.checkData(id, function(data) 
{
  myObject.currentDataStatus = data;
  alert(myObject.currentDataStatus);
});

或者更好的是,让你的对象更智能:

var myObject = ...;
ViewDwr.checkData(id, function(data) 
{
  myObject.onDataChecked(data);
});

重要的是,您必须在success回调中处理结果(如alert(currentDataStatus))。