目标:我想要的是每次在数据库中添加一些东西(在main.php到submit_to_db.php之后),从数据库中获取数据并刷新$.ajax (通过draw_polygon更明显)。
基本上,我有一个main.php,它将ajax调用另一个php来接收一个数组,这个数组将被保存到数据库中,而json调用另一个php来返回一个数组将被main.php使用。
$(document).ready(function() {
get_from_db();
$('#button_cancel').click(function(){
$.ajax({
url: 'submit_to_db.php',
type: 'POST',
data: {list_item: selected_from_list},
success: function(result){
...
get_from_db();
}
});
});
function get_from_db(){
$.getJSON('get_from_db.php', function(data) {
...
draw_polygon(data);
});
}
});在我的例子中,我所做的是一个get_from_db函数调用,让getJSON实际从数据库中获取数据,并将这些数据用于draw_polygon。但这是否应该这样做呢?我是一个完全的新手,这也是我第一次尝试getJSON和ajax,说实话。那么我的问题是:异步实际上是如何工作的?还有其他解决办法吗?而不是必须用get_from_db调用函数getJSON (它不是同步的,对吗?这就是为什么不在函数中的页面不更新的原因吗?)一直以来,就像$.ajax和async: false一样(顺便说一句,我无法让它工作)。我的方法是可行的,但我想也许还有其他更好的方法来做到这一点。我很想学怎么做。提前谢谢。我希望我说的有道理。
为了使它更清楚,下面是我想实现的目标:
@start,从数据库中获取数据(目前通过getJSON)canvas中使用data绘制或绘制发布于 2012-10-22 10:48:51
异步表示请求在后台运行,并在得到响应时调用函数。如果您想要一个结果,但是允许在请求中使用您的应用程序,这个方法是最好的。如果您希望得到直接响应,请查看synchron请求。此请求将暂停脚本执行,直到得到响应为止,并且用户在收到响应之前不能做任何事情。您可以通过以下方式切换它:
async: false,例如:
$.ajax({
url: "myurl",
async: false,
...
})发布于 2014-04-14 09:56:39
由于$.getJSON()使用ajax配置,所以只需设置全局ajax配置:
// Set the global configs to synchronous
$.ajaxSetup({
async: false
});
// Your $.getJSON() request is now synchronous...
// Set the global configs back to asynchronous
$.ajaxSetup({
async: true
});发布于 2013-05-13 16:37:37
$.getJSON()不接受配置,因为它在docs中说它是以下的速记版本:
$.ajax({
dataType: "json",
url: url,
data: data,
success: success
});因此,只要根据这一点重写您的请求,异步:false就会像您预期的那样工作。
https://stackoverflow.com/questions/13009755
复制相似问题