Piping Value: Ajax + JQuery

Piping Value: Ajax + JQuery

本文关键字:JQuery Ajax Value Piping      更新时间:2023-09-26

我有一个函数,在这个函数中,我执行一个ajax请求,等待得到响应并返回一个值,但返回的值是未定义的。怎么了?

            function GetVMData(url_s){ 
                return $.ajax({ 
                       url: url_s, 
                       crossDomain: true,  
                       dataType: 'jsonp', 
                       error: function(xhr, status, error) {  
                           alert('failed') 
                        }  
                   }).pipe(function(data) { return data[4]; }); 
            } 

如果我在ajax回调中打印data[4]的值,它会打印正确的值,因此我知道请求正在通过,但当我尝试这样做时:

            var cord;
            cord = GetVMData(url).done(function(cpu_USG) { 
            return cpu_USG;
            }); 
            alert(cord)

绳索的价值是错误的。

    var cord;
    cord = GetVMData(url).done(function(cpu_USG) { 
    return cpu_USG;
    }); 
    alert(cord)

此代码异步运行。因此,您需要在回调中执行所有操作,如:

    GetVMData(url).done(function(cpu_USG) { 
        alert(cpu_USG);
    }); 

此处:

var cord;
cord = GetVMData(url).done(function(cpu_USG) { 
  return cpu_USG;
});
alert(cord);

cord包含对象,而不是值。顺便说一句,您不知道ajax调用将在哪里完成,所以您应该熟悉回调的概念。。

例如:

function makeRequest(url, callback) { 
  $.ajax({
    url: url, 
    crossDomain: true,  
    dataType: 'jsonp',
    error: function(xhr, status, error) {  
      alert('failed') 
    },
    success: callback
  }); 
}
var do_something = function (data) {
  alert(data[4]);
};
cord = makeRequest(url, do_something);