2012-11-11 37 views
0

我正在處理向其他jQuery回調提供數據的函數。問題是我沒有得到它的工作噴氣機。 當我只將fetchdata()函數的內容放入.click回調函數中時,它可以正常工作,但我需要一個單獨的通用函數,以便將來可以將它用於多個不同的回調函數。 任何人都可以指出我在這裏做錯了嗎?看起來fetchdata()函數中的循環中斷並且沒有返回值。 PS:我爲上面的演示改了一下我的代碼,問題應該仍然存在。當從回調中觸發時沒有從函數返回的值

回答

2

發生這種情況的原因是您的var html = entries.join('');在與先前的html變量重疊的成功回調中。只要html = entries.join('');會工作。但是,請不要真正使用async: false,因爲它是過時

這裏有一個更好的解決方案:

function fetchdata(callback){ 
    $.ajax({ 
     url:'/test.php', 
     data:{ action: 'fetch-data' }, 
     dataType:'json', 
     success: function(data){ 
      var entries = []; 
      $.each(data, function(id, val){ 
       entries.push(val.sample); 
      }); 
      var html = entries.join(''); 
      callback(html); 
     } 
    }); 
} 
$(document).on('click', 'a.btn.execute', function(e) { 
    e.preventDefault(); 
    fetchdata(function(html){ 
     $('div#container').html(html); 
    }); 
}); 
+0

謝謝您,您的解決方案工作正常,我!還有一個問題;我應該怎麼做才能傳遞額外的參數給函數? – carlo

+0

沒關係,明白了。 (fetchdata('parameter',function(html){...) – carlo