2

我一直在使用 JavaScript,我需要从另一个 .js 文件中调用一个函数。

该代码大部分时间都有效,但有时它会给我错误“对象没有方法里程表”。我什至将代码放在对 getScript() 的调用中,以确保它在尝试调用该odometer()函数之前已加载,但我仍然遇到随机错误。

继承人的代码:

var updateDisplay = function(){
    console.log("refreshing Odometers");
    $.getScript("/odometer.js", function(){
        $.getJSON(
            '/getData',
            {
                product: '',
                unit: unitSelection(),
                period: salesPeriod(),
                reportBegin: $("#datepickerfrom").val(),
                reportEnd: $("#datepickerto").val()
            },
            function(data){
                    $(".odometer").odometer({
                        odometerData:data
                    });
            });
    });
};

我在这一行收到一个错误:

$(".odometer").odometer({
    odometerData:data
});

它说“对象没有方法里程表”。

我正在使用 Play 框架进行开发,并且已经在 HTML 页面中导入了 jQuery 和我的其他 JavaScript 文件。

这是我的 JS 导入顺序:

  1. jQuery
  2. odometer.js(即使我使用 getScript,我也把它放在那里只是为了确保)
  3. main.js(给定的代码驻留在其中..)

我究竟做错了什么?

感谢您的帮助....

4

2 回答 2

1

我认为

$(".odometer").odometer({...})

在里程表扩展到jQuery之前调用,流程可能是这样的

$(".odometer").odometer({...});     // first called
$.fn.odometer = function(){...};    // later it was extended to jQuery
于 2012-05-23T18:59:57.723 回答
1

似乎是ajax缓存设置的问题。

我从这个问题中找到了答案:

jquery ajax 错误

添加后

$.ajaxSetup({ cache: true });

getScript 工作正常。感谢你们抽出时间来:)

于 2012-05-24T10:29:14.587 回答