0

我想实现以下功能。

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

测试.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");
            }
      });
 });

第二个.js

  $(document).ready(function(){

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

我无法调用 Successcall(); Second.js 中的函数

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

4

3 回答 3

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()。这样可以避免将函数附加到全局对象。

于 2012-09-17T06:19:50.257 回答
0

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

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

如果上面的代码工作正常并且仍然​​没有调用Successcall(); 函数
然后你可以把Successcall(); 在准备功能之外

于 2012-09-17T06:32:08.820 回答
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

于 2012-09-17T06:14:28.697 回答