从XHRGet返回字符串

时间:2013-07-10 19:00:59

标签: javascript variables dojo

我正在使用Dojo和两个单独的数据集创建一个树。一组数据构成主树结构。第二组数据取决于第一组的值。我正在使用xhrGet和Dojo 1.7.3来获取数据。

一旦返回第二组数据,我就会查看JSON的值来确定变量的值,然后将其传递给树。变量显示“!”如果返回的JSON中存在“alert”值,如果没有则返回空白。

var theAlert = dojo.xhrGet({
    url: proxy + serviceurl + targetId,
    handleAs: 'json',
    load: function(data){
            if(typeof data.alerts[0] != 'undefined'){
                    var hello = "!";
                    return hello;
            }
            else{
                    console.log("There is nothing there");
            },
    error: function(error){
            console.log(error)
            }
    });

我遇到的问题是,当我在需要的地方写“theAlert”变量时,它显示为“[object Object]”而不是“!”。

我觉得我做错了什么,但我无法弄清楚是什么。

我已经尝试过使用theAlert.valueOf();没有成功。帮助

我也可以正确接收数据,我可以通过控制台日志查看。

2 个答案:

答案 0 :(得分:1)

dojo.xhrGet()返回Deferred - http://dojotoolkit.org/reference-guide/1.9/dojo/Deferred.html

您需要执行以下操作:

var deferred = dojo.xhrGet({
  url: proxy + serviceurl + targetId,
  handleAs: 'json'
});

deferred.then(
    function(data){
        if(typeof data.alerts[0] != 'undefined'){
           processAlert("!");
        } else{
           console.log("There is nothing there");
        }
    },

    function(error){
        console.log(error)
    }
);

function processAlert(a) {
   alert(a);
} 

答案 1 :(得分:0)

请看the docs

你需要返回数据,而不是你好。