2012-09-17 29 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();以外的就緒功能