目标:我想要的是每次从数据库中获取数据并刷新main.php(通过draw_polygon更加明显)(每次在$ .ajax之后添加到commit_to_db.php中)。
所以基本上我有一个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(顺便说一句,我无法使它正常工作。我的方法行得通,但是我认为也许还有其他更好的方法可以做到这一点。我很想学习如何。提前致谢。我希望我有任何道理。
get_from_db
getJSON
draw_polygon
$.ajax
async: false
为了更加清楚,这是我想要实现的目标:
@start
canvas
data
异步确实意味着该请求在后台运行,并在收到响应时回调您的函数。如果您想获得结果但允许在请求中使用您的应用程序,则此方法是最佳方法。如果要直接响应,请查看同步请求。此请求将暂停脚本执行,直到得到响应为止,并且用户在收到响应之前无法执行任何操作。您可以通过以下方式进行切换:
async: false,
因此,例如:
$.ajax({ url: "myurl", async: false, ... })