javascript - 如何在同一个 onchange 事件期间在两个 javascript 命令之间暂停

标签 javascript php jquery ajax

我有一个带有 onchange 事件的输入:

<input type="text" value="2014-01-01" class="datepicker dateDashboard" onchange="repartiteur('DatesDashboard',$(this));document.location.href='index.php?menu=17|30&options=opt';" name="DateDebutDashboard">

function appelAjax(data)
 {$.ajax(
   {type: "post",
    data: data,
    url: 'index_ajax.php'
    });
  }

function repartiteur(action,this)
 {switch (action)
   {case 'DatesDashboard':
      data = (
       {'action' : action,
        'champ' : this.attr('name'),
        'date' : this.val()
        });
      break;}
  appelAjax(data);}

期望的目标是,当我更改输入中的日期时,通过 AJAX 发送日期以更改数据库中的值,然后根据数据库中的新值重新加载页面。

问题是,有时,repartiteur 的 ajax 调用需要更长的时间才能使用react,并且当页面重新加载(使用第二个内联 javascript 调用)时,数据库中尚未发生更改。

问题:如果有可能的话,如何延迟第二个 javascript 部分(重新加载文档)以确保 ajax 调用在页面重新加载之前完成数据库更新?

检查此答案How to implement a lock in JavaScript我觉得有一些方法可以做到这一点,但这个答案适用于不同的事件,而我希望延迟发生在同一事件中但在不同的 javascript 行之间。

我知道 event.stopPropagation 但我不希望事件停止,它必须在 ajax 调用后继续。

编辑 - 这里是接收调用的 php 代码:

$action = $_POST['action'];
switch ($action)
 {case 'DatesDashboard':
    $codeUSR = $_SESSION['usr'];
    $champ = $_POST['champ'];
    $date = $_POST['date'];
    $env = unserialize(getValue('Preferences','ps_personnes',"codeUSR='$codeUSR'"));
    $env['nav']['Contrat']['dates'][$champ] = $date;
    sauverEnvironnement($env,$oDB,'Preferences');
    break;}

数据库定义:

$oDB = new PDO("mysql:host=$gSERV;dbname=$gBASE;charset=utf8",$gUSER,$gPASS);
$oDB->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$oDB->setAttribute(PDO::ATTR_EMULATE_PREPARES,FALSE);

最佳答案

您想要一个嵌套的回调函数,如下所示:

$.ajax({
  url: 'blahblah'
}).done(function() {
    $.ajax({
      url: 'secondlayer'
    }).done(function() {
        innerstuff();
    });
  })
});

解释是,您仅在第一个功能完成后才执行第二个功能(或成功完成,取决于您)。相反,只有当第二个函数也完全完成时,您才调用最终(内部)函数。

来源:http://api.jquery.com/jquery.ajax/

关于javascript - 如何在同一个 onchange 事件期间在两个 javascript 命令之间暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21535521/

相关文章:

javascript - 固定 div 父级的 jQuery UI 小部件自动完成问题

javascript - jQuery 日期排序

php - 在 woocommerce 中获取产品图片、可用性和描述的代码

jquery mobile取消 ListView 中的点击事件

javascript - onmouseover 和 jquery 函数无法正常工作

javascript - 带有 xml DOM 的 Chrome getElementsByTagName() 返回不正确的 NodeList

javascript - Angular Material Autocomplete - 如何允许用户添加不在建议列表中的项目?

php - 取消链接和 SplFileObject

php - 将英文引号替换为德文引号

javascript - 如何在这里正确使用 .each ?