Javascript 在用户确认时执行Ajax调用,该确认应根据以前的Ajax调用显示

Javascript 在用户确认时执行Ajax调用,该确认应根据以前的Ajax调用显示,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在处理一个有关异步调用的难题: JQuery函数在用户单击时执行,然后调用php文件检查用户输入是否与数据库中已有的信息重叠。 如果确实如此,则应提示用户确认是否仍要继续,或者取消,如果单击“确定”,则执行另一个调用以在数据库中写入数据 我想的结构是这样的 用户单击按钮: Ajax->Success:对还是错 如果提示为True->User->重叠,是否继续 如果是->Ajax->在数据库上编写内容 问题是,我找不到一个单一的解决方案,可以让我这样做。 感谢您的帮助 $.ajax({

我正在处理一个有关异步调用的难题:

JQuery函数在用户单击时执行,然后调用php文件检查用户输入是否与数据库中已有的信息重叠。 如果确实如此,则应提示用户确认是否仍要继续,或者取消,如果单击“确定”,则执行另一个调用以在数据库中写入数据

我想的结构是这样的

用户单击按钮:

  • Ajax->Success:对还是错
  • 如果提示为True->User->重叠,是否继续
  • 如果是->Ajax->在数据库上编写内容
问题是,我找不到一个单一的解决方案,可以让我这样做。 感谢您的帮助

$.ajax({
    type: 'POST',
    data: { input: 'someInput' },
    success: function(response) {
        if (response.confirmation == 1)
            //Do prompt
            if (promptisSuccessful) {
                //Do a second Ajax call
            }
    }
});
php代码应该返回json响应,类似于 如果验证或逻辑通过,
{confirmation:1}
,如果验证或逻辑失败,
{confirmation:0}

希望能有帮助

php代码应该返回json响应,类似于 如果验证或逻辑通过,
{confirmation:1}
,如果验证或逻辑失败,
{confirmation:0}

希望它能帮助方法使用:

/* check if the user input will overlap with information already in the database */
$.post('/path/to/check-database.php', dataObject, function(response) {
    /* If it does - because JavaScript treats 0 as loosely equal to false (i.e. 0 == false) */
    if(response != false) {
        /* the user then should be prompted for confirmation if he wants to proceed anyway or cancel */
        if(!confirm('It overlaps, want to proceed?')) { return false; } // cancels
    }
    /* Write stuff on database */
    $.post('/path/to/update-database.php', dataObject);
});
基本上,您在checkphp脚本中发布,它返回1(true)或0(false)。如果这是真的,您确认您的用户想要继续。如果他们单击“取消”,它将退出该功能。如果他们确认或者脚本返回false,它将在更新PHP脚本中执行第二个POST。

方法使用:

/* check if the user input will overlap with information already in the database */
$.post('/path/to/check-database.php', dataObject, function(response) {
    /* If it does - because JavaScript treats 0 as loosely equal to false (i.e. 0 == false) */
    if(response != false) {
        /* the user then should be prompted for confirmation if he wants to proceed anyway or cancel */
        if(!confirm('It overlaps, want to proceed?')) { return false; } // cancels
    }
    /* Write stuff on database */
    $.post('/path/to/update-database.php', dataObject);
});
基本上,您在checkphp脚本中发布,它返回1(true)或0(false)。如果这是真的,您确认您的用户想要继续。如果他们单击“取消”,它将退出该功能。如果他们确认或者脚本返回false,它将在更新PHP脚本中执行第二个POST。

Javascript

$.ajax({
    type: "POST",
    url: 'your_url.php',
    data: your_data
  })
  .success(handleResponse);

function handleResponse(data) {
  if (data.request_overide) {
    if (confirm('There is an overlap... Proceed?')) {
      data.force = true;
      $.ajax({
          type: "POST",
          url: 'your_url.php',
          data: your_data
        })
        .success(handleResponse);
    }
  } else {
    alert('Successfully added!')
  }
}
PHP-your_url.PHP

$duplicate = false;
//Check if duplicate
if(!$_POST['force']){
   $duplicate = somecheck();
}
if(!$duplicate){
   addData();
}
echo json_encode(['request_overide' => $duplicate]);
Javascript

$.ajax({
    type: "POST",
    url: 'your_url.php',
    data: your_data
  })
  .success(handleResponse);

function handleResponse(data) {
  if (data.request_overide) {
    if (confirm('There is an overlap... Proceed?')) {
      data.force = true;
      $.ajax({
          type: "POST",
          url: 'your_url.php',
          data: your_data
        })
        .success(handleResponse);
    }
  } else {
    alert('Successfully added!')
  }
}
PHP-your_url.PHP

$duplicate = false;
//Check if duplicate
if(!$_POST['force']){
   $duplicate = somecheck();
}
if(!$duplicate){
   addData();
}
echo json_encode(['request_overide' => $duplicate]);

jQuery.ajax有一个成功的回调-将您的逻辑和后续的ajax调用放在那里-
我找不到一个解决方案-
-您找不到一个解决方案,因为实际上有数千个解决方案?如果我让您生气或是其他什么,我很抱歉,这是我在学校的第一个使用javascript的项目,我仍然有点不知道该问什么或搜索什么。谢谢你的回复!jQuery.ajax有一个成功的回调-将您的逻辑和后续的ajax调用放在那里-
我找不到一个解决方案-
-您找不到一个解决方案,因为实际上有数千个解决方案?如果我让您生气或是其他什么,我很抱歉,这是我在学校的第一个使用javascript的项目,我仍然有点不知道该问什么或搜索什么。谢谢你的回复!非常感谢您的回答,非常优雅的处理方式!非常感谢您的回答,非常优雅的处理方式!