在Jquery中从一个js访问另一个js的函数?

时间:2012-09-17 06:11:25

标签: html5 jquery

我想实现以下功能。

我有两个Jquery .js文件都导入到一个HTML文件中并使用ajax功能。 First.js有一个jj函数,它将获得json响应。如果服务返回成功,我必须调用Second.js中存在的另一个ajax调用

的test.html

<!DOCTYPE html>
 <html>
   <head>
     <meta charset="ISO-8859-1">
      <title>Insert title here</title>          
      <script type="text/javascript" src='js/jquery.js'></script>
      <script type="text/javascript" src="js/test.js"></script>
      <script type="text/javascript" src="js/test1.js"></script>
   </head>
    <body>  
     <div class="ui-body">
      <fieldset class="ui-grid-a">                          
         <div id="buttondiv" class="ui-block-a"><a data-role="button" id="loginbtn" data-theme="b">Login</a></div>
         <div id="loading" style="display:none"><img src='css/images/demo_wait.gif' /></div>                                         
    </fieldset>
  </div>
</body>
</html>

首先.js

  $(document).ready(function(){
     $.ajax({
           .
           .
           .            
            success:function(data){ 
                 Successcall();
            },
           error:function(xhr){ 
                  alert("Error");
            }
      });
 });

Second.js

  $(document).ready(function(){

 function Successcall(){
         $.ajax({
           .
           .
           .            
            success:function(data){ 
                 alert("In Second JS");
            },
           error:function(xhr){ 
                  alert("Error");
            }
      });
      }
 });

我无法调用Successcall();函数来自Second.js

有些人可以帮我解决这个问题。

3 个答案:

答案 0 :(得分:0)

Second.js中,删除$(document).ready包装。 Successcall()函数必须在document ready之外才能访问

 function Successcall(){
         $.ajax({
           .
           .
           .            
            success:function(data){ 
                 alert("In Second JS");
            },
           error:function(xhr){ 
                  alert("Error");
            }
      });
      }

在first.js之前先加载second.js

答案 1 :(得分:0)

Second.js中的Successcall函数超出了First.js的范围,因为它包含在$(document).ready()函数范围内。

Muthu Kumaran的解决方案会将Successcall函数附加到全局对象,这将起作用,但是相当混乱恕我直言。

也许这会更好(把它放在Second.js中)

var my_functions = {};
my_functions.Successcall = function() {
  // do something
};

然后从First.js调用my_functions.Successcall()。这样就可以避免将函数附加到全局对象。

答案 2 :(得分:0)

首先检查你的ajax呼叫成功方法。
把警报功能像

一样
success:function(data){ 
                 **alert("Got success");**
                 Successcall();
        }

如果上面的代码工作正常但仍未调用 Successcall(); 函数
那么你可以把 Successcall(); 放在就绪函数

之外