当前位置: 首页 > 知识库问答 >
问题:

顺序调用的AJAX函数

司空学智
2023-03-14

打扰一下。我还在学习令人惊叹的JQuery语言。我遇到了一个问题,读了很多书,但仍然一团糟。希望你能指导我解决问题。

我有三个函数,它们执行三个post调用。它们返回一个文本变量,我最近将其解析为JSON(如果可用)。

<script>
  $(document).ready(function() {
      ...
      afterAction: 
        a(param1,param2);
        ...
        param1: [other value];
        ...
        b(param1);

      select:
        a(param1,param2);
        b(param1);
      ...
  });

  function a (param1,param2) {
      // get data from DOM objects, val, texts, whatever
      $.post ( "a.php", { 
              param1: param1,
              param2: param2,
              stuff1: [data from DOM objects...]
              },function(data){                         
                 console.log(data)
                 // do something (change dom objects properties, append..)
              }
       });

  function b (param1) {
      // get data from DOM objects, val, texts, whatever
      $.post ( "b.php", { 
              param1: param1,
              stuff1: [data from DOM objects...]
              },function(data){
                 console.log(data)
                 // do something  (change dom objects properties, append..)
              }
  });

  function c (param1) {
      // get data from DOM objects, val, texts, whatever
      $.post ( "c.php", { 
              param1: param1,
              stuff1: [data from DOM objects...]
              },function(data){
                 console.log(data)
                 // do something  (change dom objects properties, append..)
              }
  });

</script>

问题是所有这些功能都很有效。。。当然,它们是异步的。我需要:

  • 按顺序执行,就像它们是同步的
  • 除此之外,(这是我的挑战之一)函数a接收到一个param1,但在执行后,代码将param1更改为另一个值,该值将用于函数b。
  • 而且,更重要的是,如果触发了某个DOM事件(后动作Owl Carrousel),就会发生这种情况。如果触发了不同的DOM事件(selectmenu select),将执行函数a,param1将保留其值,并调用函数b

我尝试过但没有成功的事情:

  1. 使用$.ajax请求(post方法和type=“text”)
  1. 函数a使用php和mysqli插入、更新或删除数据。它肯定能正常工作。
  2. 函数b从同一个表中检索数据。
  3. 函数c检索日期列表并在选择html之前更改菜单

如果你能帮助我,非常感谢。。。

部分解决方案?正在努力!将$. post更改为$. ajax({...类型:'POST'}),并使用返回$. ajax和成功回调检索数据。稍后,我需要一个$。当(a(参数1,参数2),b(参数1*),c(参数1))。完成(函数(data1,data2,data3){...});语句,我可以处理单独的数据集。问题是,当参数1是a和b函数的不同值时,要提前计算,

共有1个答案

宰父冠玉
2023-03-14

链接它们的一种快速方法是在之前要执行的回调函数中调用它们中的每一个。

例如,由于a是您的第一个函数,请调用它,然后在其回调中根据需要操作变量并调用b,并在其中调用c

基于您的代码的粗略示例

  $(document).ready(function() {
    //call function a first
    a(param1,param2);
  });

  function a (param1,param2) {
      // get data from DOM objects, val, texts, whatever
      $.post ( "a.php", { 
              param1: param1,
              param2: param2,
              stuff1: [data from DOM objects...]
              },function(data){                         
                 console.log(data)
                 // do something (change dom objects properties, append..)

                 //change the state of param1 to whatever is required and then call function b
                 b(param1);
              }
       });

  function b (param1) {
      // get data from DOM objects, val, texts, whatever
      $.post ( "b.php", { 
              param1: param1,
              stuff1: [data from DOM objects...]
              },function(data){
                 console.log(data)
                 // do something  (change dom objects properties, append..)

                 //change the state of param1 to whatever is required and then call function c
                 c(param1);
              }
  });

  function c (param1) {
      // get data from DOM objects, val, texts, whatever
      $.post ( "c.php", { 
              param1: param1,
              stuff1: [data from DOM objects...]
              },function(data){
                 console.log(data)
                 // do something  (change dom objects properties, append..)
              }
  });
 类似资料:
  • 问题内容: 可以说我有一个简单的函数,像这样。 http://jsfiddle.net/AT5vt/ 是否可以使全局ajaxSuccess()函数在本地成功回调之前被调用?因为我想对结果进行全局检查,然后再由局部函数进行进一步处理。 问题答案: 使用默认的ajax发布而不是使用自定义发布处理程序: http://jsfiddle.net/AT5vt/1/ 并未将其放在jsfiddle中,因为从那里

  • 问题内容: 我想以这种方式进行Ajax调用的堆栈:call(n-1)完成后,call(n)开始… 由于多种原因,我无法使用 async:false : 一些请求可能是 jsonp (最相关) 我还有其他一些可能同时起作用的ajax请求。 浏览器被阻止 我无法以这种方式链接我的请求: 因为请求的数量和参数是根据用户输入动态创建的。 一个小例子说明了我的问题。 您将看到服务器响应顺序是随机的,我要实现

  • 问题内容: 我要实现的目标 我有一些要展示的作品。所以,我有这些的缩略图。当访客单击缩略图时,我希望打开一个div(称为slickbox)并显示标题,说明和有关所单击作品的滑块。 我已经完成的工作以及如何 从数据库中获取工作数据。这是我的作品清单的一小部分: index.php 如您所见,我有一个ul标签,其中每个作品都包含li标签。每个li标签获取数据库中工作的ID,每个li标签包含h3标签和p

  • 问题内容: 我使用jQuery。而且我不想在我的应用程序上进行并行AJAX调用,每个调用都必须等待上一个调用之后才能开始。如何执行呢?有帮手吗? 更新 如果我想知道XMLHttpRequest或jQuery.post的任何同步版本。但是顺序!=同步,我想要一个异步和顺序解决方案。 问题答案: 有比使用同步ajax调用更好的方法。jQuery ajax返回一个延迟,因此您可以使用管道链接来确保每个a

  • 问题内容: 我已经审查了很多有关此类问题的答案,但现在我对最佳方法感到困惑。鉴于最新的jquery,我想 调用一个ajax函数 做ajax处理(成功或错误)//正常工作 成功或错误时,将状态返回到调用函数以进行进一步处理 在调用函数(doAjax)中,如何等待回调,然后完成对成功或错误的处理(在这种情况下,成功时清除表格,错误时保持原样) 感谢任何建议, Art [EDIT] 你们发现有一个错字,

  • 问题内容: 有没有一种方法可以验证在Mockito中是否曾经调用过a? 问题答案: 帮助您做到这一点。