1

以下のメソッドを呼び出している別のメソッドから、問題は data[4] が 0 ではないのに常に 0 を返すことです。そうでない場合は、説明して修正を提案してください。

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

1 に答える 1

2

jquery deferredsを使用できます:

// the function definition
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]; });
}

// function call example
GetVMData('some url').done(function(cpu_USG) {
    alert(cpu_USG);
});

このソリューションは、 ajaxリクエストを同期させるよりもはるかに優れています。

于 2012-08-23T00:27:22.153 に答える