Sencha Architect 将数据添加到数据库并在同一事件上更新存储内容(计数)

Sencha Architect add data to database and update store content(count) on same event

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());
 }

我有这个点击事件,它调用 Ajax 请求并将数据插入数据库 table。 我有一个商店 'myProfiles',它从 table 中获取数据。 但是存储的数据总是落后一条记录。

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

问题是时间问题。这是发生了什么:

  • 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。随着您的应用程序和表数量的增长,这一点尤为重要。