Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Typeahead问题-Ajax只返回Json数据一次_Javascript_Jquery_Ajax_Json_Typeahead - Fatal编程技术网

Javascript Typeahead问题-Ajax只返回Json数据一次

Javascript Typeahead问题-Ajax只返回Json数据一次,javascript,jquery,ajax,json,typeahead,Javascript,Jquery,Ajax,Json,Typeahead,几个小时以来,我一直在使用Twitter的Typeahead插件 基本上,我们是从响应格式为.JSON的web服务(ASMXWebService)中提取数据 一旦我们通过猎犬获得它,我们就将它转换成一个字符串,去掉一些额外的字符,然后再将其转换成Json,然后将其传递给Typeahead var engine= new Bloodhound({ datumTokenizer: function (d) { return Bloodhound.tokeni

几个小时以来,我一直在使用Twitter的Typeahead插件

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

一旦我们通过猎犬获得它,我们就将它转换成一个字符串,去掉一些额外的字符,然后再将其转换成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一次、一次地获取数据,但是当用户在输入框中键入更多字符时,代码会多次通过过滤器。我相信这就是问题所在。由于使用ASMXWebService的方法,我们必须使用一种POST类型,所以Ajax似乎无法发出多个请求,无论我们在输入框中键入多少字符


正如我所说,这几天来一直让我们抓狂,所以我们非常感谢您的帮助。

这个博客帮助我们解决了这个问题-

看起来我们把事情复杂化了一点。我们仍然需要去掉并重新转换我们的Web服务器在Ajax部分中吐出的Json,但我们让它工作起来了