一个div可以触发对另一个div的ajax响应

时间:2013-11-10 22:49:34

标签: jquery ajax html triggers

我想要的是一个包含3个div区域的主页面,并使用ajax按顺序调用每个区域。因此,当页面加载时,div1将已经从ajax加载被调用的页面。 (正在调用的页面上正在完成一些繁重的mysql工作)。完成后,它将返回“完成”一词。

当发生这种情况时,我希望ajax触发下一个加载页面到div 2,它将完成整个过程并返回单词“complete”。与第三个程序相同。

基本上,我有一个很大的mysql数据更新正在执行,PHP保持超时(我已经超出执行时间)所以我的理论是......如果我可以限制它处理的行数(它可以做2000)没有超时的行)然后我希望它处理2000行...完成..这个div让我知道返回单词“完成”并启动div 2来处理下一批记录。

我很确定这不是最好的做法而且我正在研究存储过程的可能性但是这个假设似乎是最充足的,因为我必须找到一个补救措施的时间框架(一旦它被修复,我有时间研究和学习更好的方法)

我发现了一篇可能会有所帮助的文章。我不太了解做多重反应

How can i change the contents of div x (with ajax) automatically when another ajax call is made changing the contents of div y?

我希望你能提供帮助。

感谢

更新: Matej,可以嵌套3个这样的div吗? 这可以嵌套吗?

$.ajax({
  type: "POST",
  url: "example.php",
  data: { name: "John", location: "Boston" }
})
  .done(function( msg ) {
          $.ajax({
          type: "POST",
          url: "example2.php",
         data: { name: "Bill", location: "DC" }
         })
  .done(function( msg ) {
                    $.ajax({
                    type: "POST",
                    url: "example.php",
                   data: { name: "John", location: "Boston" }
                    })
                .done(function( msg ) {
                 // HERE
                 });
        });
  });

更新

这种接近我正在寻找的东西

 <head>
 <title>jQuery.load()</title>
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
 <script type="text/javascript">
$(document).ready(function(){
    $("#div1").load("firstfile.php");
});
 </script>
 </head>
 <body>
 <a href="javascript:void(0)" id="loadPage">Click To Load Web Page</a><br />
 <div id="div1" /></div>
<div id="div2" />on standby</div>
<div id="div3" />on standby</div>
<hr>

<script>
if ($('#div1:contains("Complete")').length > 0) {
    //load 2nd file in div 2
}

if ($('#div2:contains("Complete")').length > 0) {
        //load 3rd file in div 3
}
</script>

执行任务时,它会返回单词“Complete”,然后触发div 2加载页面,完成后它将返回单词“Complete”,然后触发div 3加载页面。

一个问题是我无法看到innerHTML,因此单词“Complete”只有在代码已经在页面中而不是从页面加载时才有效...而且我也有点希望我可以做到这一点,而不需要任何基于文本的触发器。

理想情况下,我希望它们是一种方式,firstloadedpage.php可以返回触发div2继续的东西,或者它是否可以向父节点发送信号,指示负载完成,并具有父触发器div 2

1 个答案:

答案 0 :(得分:1)

你可以在第一个完全回调中启动下一个ajax函数。

$.ajax({
  type: "POST",
  url: "example.php",
  data: { name: "John", location: "Boston" }
})
  .done(function( msg ) {
    // HERE
  });