首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getJSON同步

getJSON同步
EN

Stack Overflow用户
提问于 2012-10-22 10:44:03
回答 4查看 88.8K关注 0票数 45

目标:我想要的是每次在数据库中添加一些东西(在main.php到submit_to_db.php之后),从数据库中获取数据并刷新$.ajax (通过draw_polygon更明显)。

基本上,我有一个main.php,它将ajax调用另一个php来接收一个数组,这个数组将被保存到数据库中,而json调用另一个php来返回一个数组将被main.php使用。

代码语言:javascript
复制
$(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 (它不是同步的,对吗?这就是为什么不在函数中的页面不更新的原因吗?)一直以来,就像$.ajaxasync: false一样(顺便说一句,我无法让它工作)。我的方法是可行的,但我想也许还有其他更好的方法来做到这一点。我很想学怎么做。提前谢谢。我希望我说的有道理。

为了使它更清楚,下面是我想实现的目标:

  1. 页面的@start,从数据库中获取数据(目前通过getJSON)
  2. canvas中使用data绘制或绘制
  3. 当我单击done按钮时,它将更新数据库。
  4. 我希望再次自动获得数据,以重新绘制画布中的更改。
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-22 10:48:51

异步表示请求在后台运行,并在得到响应时调用函数。如果您想要一个结果,但是允许在请求中使用您的应用程序,这个方法是最好的。如果您希望得到直接响应,请查看synchron请求。此请求将暂停脚本执行,直到得到响应为止,并且用户在收到响应之前不能做任何事情。您可以通过以下方式切换它:

代码语言:javascript
复制
async: false,

例如:

代码语言:javascript
复制
$.ajax({
    url: "myurl",
    async: false,
    ...
})
票数 29
EN

Stack Overflow用户

发布于 2014-04-14 09:56:39

由于$.getJSON()使用ajax配置,所以只需设置全局ajax配置:

代码语言:javascript
复制
// 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
});
票数 64
EN

Stack Overflow用户

发布于 2013-05-13 16:37:37

$.getJSON()不接受配置,因为它在docs中说它是以下的速记版本:

代码语言:javascript
复制
$.ajax({
  dataType: "json",
  url: url,
  data: data,
  success: success
});

因此,只要根据这一点重写您的请求,异步:false就会像您预期的那样工作。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13009755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档