Sencha Architect将数据添加到数据库并更新同一事件的商店内容(计数)

时间:2015-01-31 16:51:16

标签: mysql ajax extjs

onAddTap: function(button, e, eOpts) {

Ext.Ajax.request({
        url: "http://localhost:96/OrderApplication/order.php?action=postproduct",
        method :"post",
        params: {
            name :Name

        }

    });



 var store = Ext.getStore("myProfiles");
   store.load();
   console.log(store.getCount());
 }

我有这个tap事件调用和Ajax请求并将数据插入数据库表。 我有一个商店' myProfiles'从表中获取数据。 但是商店里的数据总是落后一个记录。

例如,第一次将log计数为0,而商店应加载1条记录。在第二次点击时,它将获得计数1,同​​时在数据库表中有2条记录。我知道我可能做错了,因为我是sencha建筑师和开发人员的新手。主要的是我想在同一个tap事件中插入数据并更新商店。

1 个答案:

答案 0 :(得分:1)

问题在于时机。这就是:

  • ajax请求被称为
  • 存储加载会触发第二个ajax请求。
  • 后端读取商店数据
  • 后端更新数据

有两种方法可以实现一致的行为:

首先。根据您当前的代码,在完成更新ajax调用后触发存储加载。

var store = Ext.getStore("myProfiles");
Ext.Ajax.request({
    url: "http://localhost:96/OrderApplication/order.php?action=postproduct",
    method :"post",
    params: {
        name : Name
    },
    succes : function(){
        store.load()
        console.log(store.getCount())
    }
});

}

第二种方法是:

  • 在ExtJs中更新商店。
  • 同步商店(使用' store.sync()')。

这样您就不需要自己发出ajax调用了。 ExtJs正在照顾它。您只需要在服务器端处理创建请求。

我会推荐你​​后者。它允许您为所有表格提供一致的后端API。当您的应用程序和表的数量增长时,这一点尤为重要。