2012-09-17 30 views
0

我想实现下面的功能。从js到jquery中的另一个js访问函数?

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

的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的功能

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

+1

尝试在第一个文件之前定位第二个文件 –

回答

0

在Second.js的Successcall功能超出First.js的范围的,因为它之前先加载second.js包含在$(document).ready()函数范围内。

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

或许,这将是更好的(把这个Second.js)

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

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

+0

你会解释它是如何混乱吗? –

+0

该URL很好地解释了它http://www.svennerberg.com/2009/02/global-variables-in-javascript/ – user1565195

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

0

那么你首先检查你的ajax调用成功方法。
把报警功能一样

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

如果上面的代码工作正常,但仍不能调用Successcall();功能
然后你可以把Successcall();以外的就绪功能