首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Typeahead猎犬POST请求

Typeahead猎犬POST请求
EN

Stack Overflow用户
提问于 2014-02-17 13:46:41
回答 2查看 27K关注 0票数 17

我似乎不能让远程查询正确地使用POST。

代码语言:javascript
复制
var creditors = new Bloodhound({
    datumTokenizer: function (d) {
        return Bloodhound.tokenizers.whitespace(d.value)
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
        url: "../getCreditors",
        replace: function(url, query) {
            return url + "#" + query;
        },
        ajax : {
            type: "POST",
            data: $.param({q: queryInput.val()})
        }
    }
});

queryInput.val()不获取对象的当前值,仅获取侦探猎犬对象实例化时的值。如何将查询字符串放入ajax数据选项?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-21 23:19:50

您可以使用$.ajax的beforeSend

代码语言:javascript
复制
var creditors = new Bloodhound({
    datumTokenizer: function (d) {
        return Bloodhound.tokenizers.whitespace(d.value)
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
        url: "../getCreditors",

        replace: function(url, query) {
            return url + "#" + query;
        },
        ajax : {
            beforeSend: function(jqXhr, settings){
               settings.data = $.param({q: queryInput.val()})
            },
            type: "POST"

        }
    }
});
票数 16
EN

Stack Overflow用户

发布于 2015-06-26 18:17:12

您可以将prepare属性与remoteprefetch一起使用,但请注意函数签名会发生变化。使用prefetch的示例

代码语言:javascript
复制
var Bloodhound = new Bloodhound({
                datumTokenizer: Bloodhound.tokenizers.whitespace,
                queryTokenizer: Bloodhound.tokenizers.whitespace,
                prefetch: {
                    url: remote,
                    prepare: function (settings) {
                        settings.type = "POST";
                        settings.contentType = "application/json; charset=UTF-8";
                        return settings;
                    },
                    remote: function (query, settings) {
                        settings.type = "POST";
                        settings.data = {q: query, foo: 'bar'}; // you can pass some data if you need to
                        return settings;
                    }
                }
            });

请记住,使用remote时,函数签名会随着function(query, settings)的变化而变化。

参考:github.com/twitter/typeahead.js/issues/1236

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

https://stackoverflow.com/questions/21821658

复制
相关文章

相似问题

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