2010-08-20 71 views
1
function json (url){ 
     $.getJSON(url, function(data) { 
      return data; 
     }) 
    } 

此功能不看 「數據」功能沒有看到JSON對象(Java腳本和jQuery)

function MakeAlert(){ 
     data = json('action.php'); 
     window.alert(data.name); 
} 

這項工作:

function json (url){ 
      $.getJSON(url, function(data) { 
       window.alert(data.name); 
      }) 
    } 

回答

2

這是因爲$.getJSON是異步的。它發送請求並立即返回。一旦服務器響應(可能是幾秒鐘後),它會調用success回調,這就是爲什麼data只能在此回調中訪問的原因。

如果你想阻止你可以發送一個同步請求調用者(注意,這可能會凍結UI,同時請求執行這違背了AJAX的全部目的):

function json(url) { 
    var result = null; 
    $.ajax({ 
     url: url, 
     async: false, 
     dataType: 'json', 
     success: function(data) { 
      result = data; 
     } 
    }); 
    return result; 
} 
+0

謝謝。現在變得清晰 – user426134 2010-08-20 08:49:06

1
function json (url){ 
    $.getJSON(url, function(data) { 
     return data; 
    }) 
} 

你在這裏不能使用return。您將返回data的匿名關閉功能。

你最好的辦法是使用callback function,當執行getJSON成功處理程序時應該應用callback function

function json (url, cb){ 
    $.getJSON(url, function(data) { 
     cb.apply(null, [data]); 
    }) 
} 

使用

json('action.php', function(data){ 
    alert(data); 
});