2013-04-03 112 views
2

我在自定義函數中使用jQuery時遇到問題。jQuery getJSON不能在函數內工作

當我開始從我的.html喜歡我的jQuery權:

<script type="text/javascript" src="js/MyJS.js"></script> 

MyJS:

$.getJSON('MyFilePath', function(data) 
{ 
    var items = []; 
    $.each(data, function(key, val) 
    { 
    //Doing things with my data. 
    }); 
}); 

它工作正常,並返回了我的文件。 (我用json結構使用純文本文件)。

但是,當我試圖從一個函數例如爲:

function getAllDepts() 
{ 
    $.getJSON('MyFilePath', function(data) 
    { 
    var items = []; 
    $.each(data, function(key, val) 
    { 
    //Doing things with my data. 
    }); 
    }); 
} 

啓動它,它不會工作。似乎他無法加載我的文件,但我只是不明白爲什麼。

有了:

$.ajax({ 
      url: "MyFilePath", 
      success: function(data){ 
      console.log(data); 
      }, 
      error: function(data){ 
      alert(error); 
      } 
      }); 

我會仍然能夠得到我的數據,但我只是想知道爲什麼的getJSON不起作用。 我讀到getJSON在加載本地文件時遇到了問題,但我不確定它是否適用於我的問題。

任何想法?

@comments:

  • 是的,我通過一個onclick調用函數: 「getDepts()」 在我的.hmtl和它得到正確調用。
  • 由於getJSON無法正常工作,返回值僅提前一步。這不是jQuery認爲的問題,因爲使用Firebug(Firefox)進行調試時,該方法會被調用。主要問題似乎是他無法加載文件。
  • 我的數據文件是一個.txt文件。與json結構。 (我檢查了我的json結構http://jsonlint.com/,它說沒關係)
  • 有沒有像404錯誤,因爲文件存儲在本地,使用螢火蟲時沒有錯誤出現。
  • 我在編輯這篇文章時創建了語法錯誤。修正了大括號。
+0

看看你的控制檯,看看你是否有任何問題,如404。 – user1477388

+1

你在調用'getAllDepts'函數嗎? –

+1

你真的調用函數嗎? –

回答

1

你的功能does not看起來正確的嘗試

function getAllDepts() { 
    $.getJSON('MyFilePath', function(data) { 
     var items = []; 
     $.each(data, function(key, val) { 
      //Doing things with my data. 
     }); 
    }); 
} 
+0

是的,你是對的,但這只是一個錯誤,而在這裏創建這個職位。在我的程序中,我失蹤了「);」。 – blaluma

0

嘗試以下。這可能與$ .getJSON的異步特性有關。

(document).ready(function() { 

    function getAllDepts() 
    { 
     $.getJSON('MyFilePath', function(data) 
     { 
     var items = []; 
     $.each(data, function(key, val) 
     { 
     //Doing things with my data. 
     }); 
     }); 
    } 

}