Php 只有一个函数可以等待AJAX调用,而无需同步AJAX(SJAX)
我正在网页上创建动态待办事项列表。在页面上有一个用于注册todo的表单和一个显示所有注册todo的表格。其思想是在表单中注册您想要完成的事情,点击submit按钮,然后todo列表表将自动更新为最新注册的todo。我的脚本管理所有这些,除了自动更新最新注册的todo。 这是我的密码:Php 只有一个函数可以等待AJAX调用,而无需同步AJAX(SJAX),php,ajax,jquery,wait,Php,Ajax,Jquery,Wait,我正在网页上创建动态待办事项列表。在页面上有一个用于注册todo的表单和一个显示所有注册todo的表格。其思想是在表单中注册您想要完成的事情,点击submit按钮,然后todo列表表将自动更新为最新注册的todo。我的脚本管理所有这些,除了自动更新最新注册的todo。 这是我的密码: $(document).ready( function() { $('#todo_registration input[type="submit"]').click(func
$(document).ready( function() {
$('#todo_registration input[type="submit"]').click(function(evt){
evt.preventDefault();
var todo = $('#todo_registration input[name="daily_todo"]').val();
$('#todo_registration input[name="daily_todo"]').val(null);
$.when( registerTodo(todo) )
.then (
updateTodoDisplay()
);
});
});
function updateTodoDisplay() {
$.post("./daily_todo_display.php", null, replaceTbodyHTML);
}
function replaceTbodyHTML(data) {
$('#todo_display_table tbody').html(data);
}
function registerTodo(todo) {
var parameters = {
daily_todo: todo,
registration_button: 'clicked'
};
$.post("./daily_todo_registration.php", parameters); //, printRegistrationStatus);
}
我已检查脚本是否在数据库中成功注册todo。获取更新的todo列表的php脚本也可以工作。我认为,我的问题是函数updateTodoDisplay()在运行之前不会等待registerTodo()中的AJAX调用成功完成。但我认为我使用的#.when()应该让updateTodoDisplay()等待
我知道使AJAX调用同步可能会解决我的问题,但在我看来,这是一个糟糕的解决方案。我只希望这一个也是唯一的函数等待AJAX调用完成。因此,我希望网页的其余部分在进行这些调用时正常工作
有人知道我的问题的解决方法吗?Thnx.您应该$.发布数据,和服务器端更新完成后,也从服务器端响应-将文本/json/xml发送回UI。使用它保存一个(第二个)请求,保持ajax异步,使代码更短/更易于维护,并消除了这个问题。=) 您所需要做的就是找出您的服务器端响应
祝您愉快!=) 您应该$.发布数据,和服务器端更新完成后,也从服务器端响应-将文本/json/xml发送回UI。使用它保存一个(第二个)请求,保持ajax异步,使代码更短/更易于维护,并消除了这个问题。=) 您所需要做的就是找出您的服务器端响应
祝您愉快!=) 您所需要的是可能的,但代码中似乎有错误 改变
.then (
updateTodoDisplay()
);
到
甚至
.then (updateTodoDisplay);
问题是,在注册回调时,在当前代码中传递的是执行
updateTodoDisplay()
的结果,而不是将其作为函数传递。这就是为什么您可以立即执行它。您需要的是可能的,但看起来您的代码中有一个错误
改变
.then (
updateTodoDisplay()
);
到
甚至
.then (updateTodoDisplay);
问题是,在注册回调时,在当前代码中传递的是执行
updateTodoDisplay()
的结果,而不是将其作为函数传递。这就是为什么要立即执行它。锐利的眼睛!=)不错,伙计!=)+谢谢!我纠正了它,还从registerTodo函数返回了jqXHR对象,它工作得非常完美!非常感谢=DSharp eyes!=)不错,伙计!=)+谢谢!我纠正了它,还从registerTodo函数返回了jqXHR对象,它工作得非常完美!非常感谢