Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在另一个脚本中引用javascript函数_Javascript_Jquery_Function_Wordpress - Fatal编程技术网

在另一个脚本中引用javascript函数

在另一个脚本中引用javascript函数,javascript,jquery,function,wordpress,Javascript,Jquery,Function,Wordpress,我有一个“一天结束的大脑放屁”&无法让这段简单的代码工作。我只想在我正在使用的另一个脚本中重用函数 例如,在javascript A中,我有: 函数rollLink(){ //代码做了一些惊人的事情 }; rollLink(); 在另一个JS文件(我们称之为B)中,我试图将rollLink函数作为简单AJAX调用的一部分进行重用: $.ajax({ 网址:bla, 资料来源:bla, 成功:功能(数据){ $('#hero')。追加(数据); rollLink(); } }); 但是我得到一

我有一个“一天结束的大脑放屁”&无法让这段简单的代码工作。我只想在我正在使用的另一个脚本中重用函数

例如,在javascript A中,我有:

函数rollLink(){
//代码做了一些惊人的事情
};
rollLink();
在另一个JS文件(我们称之为B)中,我试图将
rollLink
函数作为简单AJAX调用的一部分进行重用:

$.ajax({
网址:bla,
资料来源:bla,
成功:功能(数据){
$('#hero')。追加(数据);
rollLink();
}
});
但是我得到一个错误,说没有定义rollLink()。有人能用我的方式指出错误吗

编辑:

啊,很抱歉信息不充分。我将详细说明:

  • 脚本A是我的主JS文件。它运行在我的WP主题的每个页面上&通过
    functions.php
    文件排队
  • 脚本B位于我正在构建的WP插件中
以下是输出的页脚示例:



您应该加载页面上的文件,并且在ajax调用之前必须加载定义rollLink的文件。基本情况就是这样

如果页面a的大小远远大于页面b,则下载和执行所需的时间将更长。更糟糕的是,如果您将函数放在文件的按钮上,那么即使在页面a完成加载之前,页面b也将准备就绪、运行并执行。 以防万一,请尝试验证rollLink()是否正确;在调用它之前是一个函数

    if(typeof rollLink === "function")
    {
      //true; 
    }
    else{
     //false;
    }
如果为true,则表示函数已准备就绪,否则,它不存在(尚未)。 简单的解决方法是从脚本末尾调用ajax函数,确保加载了所有必需的文件

一个无效的解决方案是递归调用ajax函数,等待rollLink加载

  if(typeof rollLink === "function")
        {
          //do ur work
        }
        else{
         //call again after one sec;
             setTimeout(function (){callSelfAjaxFunction();} , 1000);//every one sec

        }
因此,如果您喜欢这种方法,您可能希望在每次调用时传递一个计数器作为一个参数递增,并在超过某个参数时终止,这样您就不会有调用self的函数,因为服务器永远不可用

if(counter < 10 ){
  setTimeout(function (){
    callSelfAjaxFunction(counter++);
     } , 1000);//every one sec
  }
if(计数器<10){
setTimeout(函数(){
callselfajax函数(计数器++);
},1000);//每一秒
}

也许可以尝试在
$(文档)中包装
script_b.js

$(document).ready(function(){
    $.ajax({
        url: bla,
        data: bla,
        success:function(data) {
            $('#hero').append( data );
            rollLink();
        }
    });
}

这可能是因为使用该函数的文件在定义该函数的文件之前加载。当我尝试加载图像文件并在画布上显示它时,我也遇到了同样的问题。原因是要使用的文件太大,加载需要花费很多时间,在加载文件之前加载另一个文件,因此它表示未定义变量

解决方案:
您可以做的是使布尔变量functionready并将其初始化为false,然后在函数定义中将其值设为true,然后在使用该函数之前检查变量是否为true如果为true,然后执行else等待

这是不够的信息。还请向我们展示加载这两个脚本的方式。这取决于加载脚本的顺序以及代码的执行方式。
rollLink
global吗?另外,如果Ajax调用真的很快,可能页面上的脚本还没有全部加载,我想我已经发现了问题所在。当我将脚本排队时,我忘了将插件设置在页面底部(因此在脚本A下面)。我现在遇到的问题是,当我将脚本(上面引用为B)排队以显示在页面底部时,它们仍然在我的主脚本(上面引用为A)之前被调用。嗯,我想我需要进一步阅读一下如何将WP插件的脚本排队