jQuery getJSON在函数中不起作用

时间:2013-04-03 13:09:23

标签: javascript jquery html

在自定义函数中使用jQuery时遇到问题。

当我从我的.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无法正常工作。这不是mit jQuery认为的问题,因为在使用Firebug(Firefox)进行调试时,该方法会被调用。主要问题似乎是他无法加载文件。
  • 我的数据文件是.txt。与json结构。 (我用http://jsonlint.com/检查了我的json结构,它说没关系)
  • 没有类似404的错误,因为文件存储在本地,使用firebug时不会出现错误。
  • 我在编辑此帖子时创建了语法错误。修正了大括号。

2 个答案:

答案 0 :(得分:1)

你的功能看起来不对尝试

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

答案 1 :(得分:0)

尝试以下方法。这可能与$ .getJSON的异步性质有关。

(document).ready(function() {

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

}