Ajax响应处理和分配给变量

时间:2012-09-04 07:59:12

标签: javascript jquery ajax

您好我的ajax响应处理有问题

我有一个全局函数调用(),它会调用ajax并返回json响应:

function call(request_url,params) {
    $.post(request_url,params,function(response) {
        return response;
    },'json');
}

之后我有一个使用全局函数的对象GetServices call()

    var GetServices = {
      service_url:"http://xxx.com/req.php",

      getCurrency:function() {
            var resp = call(this.service_url,{act:'getCurrency'});
            return resp;
      }
    }

我希望 GetServices.getCurrency()返回ajax响应,但它返回undefined。 Javascript为其分配值 undefined ,然后完成ajax调用。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

此模式无效,因为在设置resp变量时调用仍在执行,因此resp始终为null

另一种方法是将委托函数传递给call函数以在$.post成功时运行,或将$.post更改为同步$.ajax调用。

答案 1 :(得分:0)

它的异步调用...... 因此,它将进行呼叫并恢复其处理。在拨打电话后,您将获得某个值。这取决于各种因素。例如,服务器的响应时间。

最简单的方法是从$.post()的成功处理程序中调用目标函数(要将此ajax值传递给的函数)

例如

function call(request_url,params) {
    $.post(request_url,params,function(response) {
        yourTargetFunction(response); // instead of returning the value from this
    },'json');
}