javascript - 如何将数据从数据库加载到组合框(自动完成)

标签 javascript ajax extjs

有时,在 jQuery 中很容易理解和实现的事情在 ExtJS 中可能需要很长时间才能完成,尽管 ExtJS 确实是一个很棒的库。我想做的是创建一个具有自动完成功能的组合框。

使用本地商店非常简单。

首先我创建了商店:

var searchOptions = Ext.create('Ext.data.Store', {
    fields: ['abbr', 'name'],
    data: [{
        "name": "Value1"
    }, {
        "name": "Value2"
    }]
});

然后我创建了组合框,如下所示:

{
    xtype: 'combo',
    displayField: 'name',
    fieldLabel: 'Insert NodeId',
    labelAlign: 'right',
    width: 200,
    margin: 5,
    id: 'nodeId',
    valueField: 'id',
    store: searchOptions,
    queryMode: 'local',
    minChars: 1,
    hideTrigger: true,
    forceSelection: true,
    typeAhead: true,
    listeners: {
        render: function() {
            this.store.load();
        }
    }
}

现在我想要的是运行这个远程而不是本地。如果我理解正确的话,我需要发送 Ajax 请求,从我的 postgresql 数据库获取数据,然后做什么???我在哪里存储数据?是否可以将它们放入商店中?如果可以,如何定义商店的形式?

任何帮助或示例将不胜感激。

谢谢。

最佳答案

您需要做的第一件事是使用可以加载远程数据的代理配置 searchOptions 存储。它应该有一个指向用于加载数据的服务的 URL。类似的东西

 proxy : {
    type    : 'rest',
    url     : '/api/service/users',
    reader  : {
        type : 'json',
        root : 'users'
    }
}

如果您将该服务配置为根据名为 query 的查询参数过滤其值,则可以将组合框链接到自动完成。该请求应类似于 http://domain.com/api/service/users?query=Frank

将组合框 queryMode 设置为 'remote'(或将其删除,因为默认为远程)后,无论输入什么值,都应使用查询参数中的值发送到存储代理 url。

关于javascript - 如何将数据从数据库加载到组合框(自动完成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29371980/

相关文章:

javascript - 分机JS : How to pass geolocation values to url?

javascript - extjs 在自定义元素中使用网格小部件的可能性

javascript - 使用 Google Maps API 从邮政编码获取城市,然后将其写入 JSON?

javascript - Ajax成功: function (data) not premmision 403 (Forbidden)

javascript - 如何从异步调用返回响应?

php - 哪个是更好的做法?从 Jquery 响应获取 HTML

javascript - extjs 布局,在 extjs 视口(viewport)中嵌入 html

javascript - Extjs图表选错Store了?

javascript - 如何在 html 文件的 header 中动态更改添加 javascript 文件?

c# - 从 ASP.NET 页面触发 C# 类的最简单方法是什么?