【问题标题】:javascript waiting for return before proceedingjavascript 在继续之前等待返回
【发布时间】:2011-02-15 14:00:49
【问题描述】:

我的 javascript 有问题,没有等待调用返回。我现在已经知道 javascript 是异步的,所以我想知道如何让这个方法调用等待结果。我无法控制前两个sniper,因为它们是由用户上传的。我可以使用 jquery 或纯 javascript。提前谢谢!

我有这个 javascript 调用

var value = somemethod("cmi.location");
/ /This is not getting set since it does not wait. alerts 'undefined'
alert(value);

有些方法看起来像下面的代码,

function somemethod(element){
var result;
result = API1.GetValue(element);
return result;
}

API 是通过执行以下代码实例化的窗口对象。从现在开始,我可以访问代码 sn-ps。

var API1 = new API();

API 是 javascript 中的一个对象,如下所示:

function API(){

};
API.prototype.GetValue=API_GetValue;

function API_GetValue(parameter){
$.ajax({
    type:"POST",
    async:false,
    url:"method.do",
    dataType:"xml",
    data: {action: 'getValue', parameter: parameter, value: ''},
    success:function(data){
    //I am getting 0 here
        return $(data).find('search').text();
    }
});
}

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:
    function API_GetValue(parameter){
    var newdata;
    $.ajax({
        type:"POST",
        async:false,
        url:"method.do",
        dataType:"xml",
        data: {action: 'getValue', parameter: parameter, value: ''},
        success:function(data){
        //I am getting 0 here
            newdata = $(data).find('search').text();
        }
    });
    return newdata;
    }
    

    你也可以这样做:

    function API_GetValue(parameter){
    var newdata = $.ajax({
        type:"POST",
        async:false,
        url:"method.do",
        dataType:"xml",
        data: {action: 'getValue', parameter: parameter, value: ''}
    }).responseText;
    return $(newdata).find('search').text();
    }
    

    【讨论】:

    • 我已经试过了,但还是不行。我会再试一次,你能告诉我为什么你认为这会奏效吗?
    • 因为您应该声明将在 ajax 调用之外保存数据的变量。也许你的问题仍然在 $(data).find('search').text();响应到底是什么样的?
    • 这会起作用,但因为它被设置为同步调用。
    • 这个和他的原帖一样,问题肯定出在(data).find('search').text();声明
    • 谢谢!似乎它正在工作。我应该早点问这个问题。本来可以节省 6 个小时!
    猜你喜欢
    • 2017-03-08
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多