【问题标题】:Typeahead issue - Ajax only returning Json data onceTypeahead 问题 - Ajax 只返回一次 Json 数据
【发布时间】:2014-08-17 07:55:51
【问题描述】:

我已经用 Twitter 的 Typeahead 插件拉头发了几个小时。

基本上,我们从响应格式为 .JSON 的 Web 服务(Asmx Web 服务)中提取数据。

一旦我们通过 BloodHound 获得它,我们就会将其转换为字符串,去除一些额外的字符,然后再将其重新转换为 Json,然后将其传递给 Typeahead。

 var engine= new Bloodhound({
        datumTokenizer: function (d) {
            return Bloodhound.tokenizers.whitespace("value")
        },
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        prefetch : {
            ttl : 1000,
            url : '/webservice.asmx'
        },
        remote: {
            ttl : 1000,
            url: '/webservice.asmx',
            ajax: {
                beforeSend: function (jqXhr, settings) {
                    jqXhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
                    settings.data = '{"query":"' + $('#inputText').val() + '"}';
                    alert(settings.data);
                },
                type: "POST",
                context: this
            },
            filter: function (response) {
                //return response;
                if (response.hasOwnProperty('d')) {

                    var returned = String(response.d);
                    returned = returned.slice(14,-1);

    var parsedJSON =     jQuery.parseJSON(returned);
                    return  parsedJSON ;
                }
                else {
                    return response;
                }
            }
        }
    });

    engine.initialize();

    $('#inputText').typeahead(null, {
        source: engine.ttAdapter()
    });

在输入字段中键入时,代码通过 Ajax ONCE 和 ONLY 获取基于查询的数据,但是当用户在输入框中键入更多字符时,它会多次通过过滤器。我相信这是问题所在。由于使用 Asmx webservice 的方法,我们必须使用一种 POST 类型,所以无论我们在输入框中输入多少字符,Ajax 似乎都无法发出多个请求。

正如我所说,这已经让我们发疯了好几天了,所以任何帮助都将不胜感激。

【问题讨论】:

    标签: javascript jquery ajax json typeahead


    【解决方案1】:

    这个博客帮助解决了答案 - http://www.weezey.com/2014/03/bringing-it-all-together/

    看起来我们有点把事情复杂化了。我们仍然必须剥离并重新转换我们的网络服务器在 Ajax 部分中吐回的 Json,但我们得到了它的工作。

    【讨论】:

      猜你喜欢
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 2014-03-13
      相关资源
      最近更新 更多