如何将$ .ajax对象传递给另一个函数?

时间:2010-01-16 16:57:40

标签: javascript jquery

此功能一般用于ajax calss:

function f_AjaxFunction(_param) {
    var objectWillReturn;
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: 'WS/wsGenral.asmx/f_QueryAndGetResultAsJson',
        data: "{_sParam:'" + _param + "'}",
        dataType: "json",
        success: function(data) {
            var txt = "";
            try {
                objectWillReturn = data;
            }
            catch (err) {
                alert(err.description);
            }
        }
    });
    return objectWillReturn ;
}

此函数正在调用上面的其他函数:

    function f_HavaDurumu(_paramm) {
        var obj;
        obj = f_AjaxFunction(_paramm);
        $("#spanShow").html(obj.d);
    }

2 个答案:

答案 0 :(得分:3)

您必须使用回调,因为调用是异步的:

function f_AjaxFunction(_param, callback) {
  $.ajax({
      type: "POST",
      contentType: "application/json; charset=utf-8",
      url: 'WS/wsGenral.asmx/f_QueryAndGetResultAsJson',
      data: "{_sParam:'" + _param + "'}",
      dataType: "json",
      success: function(data) {
          var txt = "";
          try {
              if($.isFunction( callback(data) )){
                callback(data);
              }
          }
          catch (err) {
              alert(err.description);
          }
      }
  });
}

function f_HavaDurumu(_paramm) {
    f_AjaxFunction(_paramm, function(data){
      $("#spanShow").html(data.d);  
    });
}

我无法想到你的代码会在Try块中导致错误的情况,但我把它留在了,因为你在那里开始使用它。

<强>更新

进一步说明:

function get_ajax(){
    var ran = false;
    $.ajax({ 'url':'/some/url', success: function(data){
        ran = true;
    });
    return ran;
}

alert(get_ajax()); // alerts "false"

它按此顺序运行:

  1. run设为false
  2. 启动AJAX请求
  3. 返回run
  4. AJAX完成,将run设置为true
  5. 但是,如果使用回调,则可以按顺序保存,以便它们执行如下:

    1. 启动AJAX请求
    2. AJAX完成后,使用返回数据执行回调

答案 1 :(得分:0)

正如Doug所说,您将需要使用异步回调。 f_AjaxFunction在数据可用之前返回。

另一种选择是Javascript Strands