0

您好,我对 ajax 响应处理有一些问题

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

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

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

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

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

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

请帮我解决这个问题。

4

2 回答 2

0

此模式不起作用,因为在resp设置变量时调用仍在执行,因此resp将始终为null.

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

于 2012-09-04T08:01:50.743 回答
0

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

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

例如

function call(request_url,params) {
    $.post(request_url,params,function(response) {
        yourTargetFunction(response); // instead of returning the value from this
    },'json');
}
于 2012-09-04T08:03:10.630 回答