javascript在继续之前等待返回

时间:2011-02-15 14:00:49

标签: javascript jquery

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

我有这个javascript电话

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

和somemethod看起来像下面的代码,

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

API是一个通过执行以下代码实例化的窗口对象。我可以从这一点开始访问代码片段。

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();
    }
});
}

1 个答案:

答案 0 :(得分:3)

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();
}