执行用户确认Ajax调用应根据先前的Ajax调用
问题描述:
我处理有关异步调用的一个难题出现:执行用户确认Ajax调用应根据先前的Ajax调用
一个jQuery功能在用户点击执行,然后调用一个PHP文件检查用户输入是否与已存在于数据库中的信息重叠。 如果确实如此,则应该提示用户确认是否要继续或取消,如果他单击确定,则会执行另一个调用以在数据库中写入数据。
我在想的结构是一样的东西
用户点击按钮:
- 阿贾克斯 - >成功:true或false。
- 如果为True - >提示用户 - >它重叠,想继续吗?
- 如果是 - > Ajax - >在数据库上写东西。
问题是,我找不到能够让我这样做的单一解决方案。 任何帮助表示赞赏!
答
的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]);
+0
非常感谢您的回答,非常优雅的处理问题的方式! –
答
$.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}
如果失败。
希望它可以帮助使用jQuery.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);
});
基本上,你发布到你的支票的PHP脚本,并返回要么1(真)或0(假)。如果确实如此,则确认用户想要继续。如果他们点击取消,它将退出该功能。如果他们确认或脚本返回false,它将执行第二个POST到您的更新PHP脚本中。
jQuery.ajax有一个成功回调 - 把你的逻辑和随后的Ajax调用在那里 - '我无法找到一个单一的解决方案' - 你找不到一个,因为有成千上万的解决方案? –
对不起,如果我让你生气或什么的,这是我在学校使用javascript的第一个项目,我仍然对要问什么或要搜索什么有点失落。感谢您的回复! –