Javascript:函数不能始终正确运行,返回不一致的数据

时间:2015-02-09 17:49:12

标签: javascript jquery ajax

所以我有一个问题,我不太清楚如何描述。我正在构建一个具有动态生成的pdf的网页,但它并不总是正确加载。我认为这可能与ajax请求有关,但我不确定。当代码正确运行时,我在控制台中得到的结果是:

s {length: 7, models: Array[7], _byId: Object, constructor: function, model: function…}
  _byId: Object 
  length: 7 
  models: Array[7]
  __proto__: n

但是当它失败时,会产生这个:

s {length: 0, models: Array[0], _byId: Object, constructor: function, model: function…}
  _byId: Object
  length: 7
  models: Array[7]
  __proto__: n

两者都拥有所有数据,但只有一个将在我拥有的foreach中运行。我认为这是由于第一行的长度为0。疯狂的是,我有一个按钮运行重新生成pdf与新数据调用相同的方法,它始终正确运行。我不知道问题是什么。以下是我的一些缩短名称的代码:

entry : function() {
      if (typeof list === 'undefined') {
        list = new ListCollection();
      }
      list.fetch({success: method1(showPage), data: {}});
    }

method1 : function(callback) {
        $.ajax({
            url: 'URL' //defined in Routes. does a DB query and returns the data
        }).done(callback);
    },

showPage : function(data) {
      var theModel = new Backbone.Model(JSON.parse(data));
      var view = new Tab.View({model: theModel, 'contentName': 'Name'});
      App.tabDiv.tabContent.show(view);
      var start = $('#date1').val();
      var end = $('#date2').val();
      getData(start, end); 
    },

getData : function(start, end) {
       list.fetch({success: generatePDF(start,end), data: {start: start, end:end});

generatePDF : function(start, end) {
       //lots of stuff but mainly a big foreach on the list then save
}

我知道一切都在某些时候有效,但有时候它似乎跳过了一些步骤。我已将控制台消息全部放在其中,并且每个人都按顺序运行。我提到的按钮只是调用具有不同开始和结束日期的getData方法,但它总是正确运行。感谢您的任何帮助。

编辑:我仍然需要一些帮助。一些澄清:问题不在于generatePDF函数。当收到正确的数据时,其中的所有内容都完全符合预期。前两个部分包含我从控制台获得的数据。 s下方的额外行是打开箭头获得的有关对象的更多信息。当它正确运行时,它表示"长度:7"在主线上的对象细节而不是"长度:0"。我认为错误是在检索数据时,ajax请求需要的时间太长。我尝试使用" async:false"在ajax但但并没有解决问题。

感谢您的帮助。

0 个答案:

没有答案