【问题标题】:loadPlayer function inside success function is undefined [duplicate]成功函数中的loadPlayer函数未定义[重复]
【发布时间】:2017-07-23 10:44:19
【问题描述】:

我在尝试以下代码时收到以下消息。

angular.js:9419 Referenceerror: loadplayer is not defined.

这是我的代码:

(function getAllAlbums(){
$http({
    method: 'GET',
    url: "api/playlist.php?type=playlist",
})
.success(function(response){
  console.log(response);
  loadPlayer(response);
})
.error(function(response){
 console.log(response);
})

})();

下文件我有这个功能:

jQuery(function loadPlayer($) {
var supportsAudio = !!document.createElement('audio').canPlayType;
if (supportsAudio) {.......

为什么我会收到 loadPlayer 未定义的消息??

【问题讨论】:

  • 你不在同一个范围内。
  • 这不是答案,但我有点担心loadPlayer 的论点。函数定义包含一个名为 $ 的参数,它(通常)是全局 jQuery 对象。 jQuery(loadPlayer) 部分应调用 loadPlayer 且不带任何参数。但是你得到了loadPlayer(response),它使用了一个完全不同的论点。为什么需要 jQuery 对象作为参数?你需要response 参数吗?这应该是两个不同的功能吗?

标签: javascript jquery angularjs ajax


【解决方案1】:

因为范围不同。 您的第一个函数是在自调用函数中声明的。 你的第二个函数被声明了,我什至不知道在哪里。 您可以做的是在一个范围内声明它们。像这样。

(function ($) {

$(document).onload = function () {
    function loadPlayer($) {}
    $http({
            method: 'GET',
            url: "api/playlist.php?type=playlist",
        })
        .success(function (response) {
            console.log(response);
            loadPlayer(response);
        })
        .error(function (response) {
            console.log(response);
        })
}
}(jQuery));

【讨论】:

    猜你喜欢
    • 2011-09-27
    • 2017-01-24
    • 2021-08-10
    • 2019-01-16
    • 1970-01-01
    • 2021-07-20
    • 2014-05-18
    • 2021-10-06
    • 2020-05-06
    相关资源
    最近更新 更多