2010-05-28 121 views
1

再次遇到一些基本問題。jQuery與getJSON調用的問題

我需要修改一個函數,該函數先前返回了一個代碼寫入對象。 林現在試圖通過$ .getJSON擺脫JSON對象

function getEventData() { 
     var result = ''; 

     $.getJSON("ajax.php?cmd=getbydate&fromdate=&todate=", function(data){ 
      result = data; 
     }); 
     return result; 
    } 

問題是,結果沒有明顯的原因回調函數來設置。

你們有解決方案嗎?

編輯: 好的,我得到了一個被刪除的答案。 我不得不升技改..

這是工作了答案:

function getEventData() { 
    var result = ''; 
    url = "ajax.php?cmd=getbydate&fromdate=&todate="; 
     $.ajax({ 
      url: url, 
      async: false, 
      dataType: 'json', 
      success: function(data){ 
        result = data; 
       } 
     }); 
    return result; 
} 
+0

我沒有刪除我的回答,但請注意,不建議使用此程序,因此儘可能避免使用此程序。 – Daff 2010-05-28 14:52:44

回答

1

應該以異步方式編程您的應用程序,這意味着您也應該爲您的應用程序流使用回調函數,或者繼續執行getJson回調函數。您也可以同步請求,然後應該能夠返回值(或至少分配它並阻止該功能,直到回調完成),但是這完全不被推薦:

function getEventData() { 
     var result = ''; 

     result = $.ajax({ 
      url: "ajax.php?cmd=getbydate&fromdate=&todate=", 
      async: false, 
      dataType: "json", 
      data: data, 
      success: function(data){ 
        return data; 
       } 
     }); 
     return result; 
    } 
+0

我不得不改變它以使其起作用,但它做到了。 即使它不推薦它在現有函數中的黑客,我真的需要函數來正確地返回它。 – 2010-05-31 07:07:48

0

你確定服務器返回有效的JSON?使用像jsonlint這樣的工具驗證它會更好。還要確保application/json被用作響應的內容類型。

+0

我確定它的確定json。 在回調函數中,我可以通過console.log(data)來檢查它,它是正確的。 – 2010-05-28 14:32:02