预先输入远程数据,不显示在文本字段中,但本地数据有效

时间:2015-10-02 16:26:50

标签: jquery typeahead.js typeahead bootstrap-typeahead bloodhound

已经尝试了一段时间,但无法找到答案。 Typeahead适用于本地数据,但不适用于远程数据。虽然我在控制台中看到了请求,但它没有将任何数据返回到typeahead。

在我正在打字的控制台中,我得到:

XHR finished loading: GET "http://mypath/msqCity.php?City=ne"
XHR finished loading: GET "http://mypath/msqCity.php?City=new"

等我打字的时候。但是在类型领域没什么。

我有一个带有查询的PHP页面。查询页面正常工作并返回数据。我注意到的是数组的键值显示为双引号而不是单引号。

我在结果上使用json_encode并输出

[{"City":"New York","StateProvince":"NY","Country":"US"},
 {"City":"Newton","StateProvince":"MA","Country":"US"},
 {"City":"New Orleans","StateProvince":"LA","Country":"US"}...]

我试过停止双引号并得到:

[{City:"New York",StateProvince:"NY",Country:"US"},
 {City:"Newton",StateProvince:"MA",Country:"US"},
 {City:"New Orleans",StateProvince:"LA",Country:"US"}...]

这些都不能远程工作。

如果我将数据放在typeahead上的本地并粘贴几条记录,它就可以了。

<body>
    <div id="remote">
        <input class="typeahead" type="text" placeholder="Enter City">
    </div>
    <script type="text/javascript">

        var cities = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('City'),
            queryTokenizer: Bloodhound.tokenizers.whitespace,
            /* local:    [{
                           City: 'Hartford',
                           StateProvince: 'CT',
                           Country : 'US'
                       },
                       {
                           City: 'Trumbull',
                           StateProvince: 'CT',
                           Country: 'US'
                       },
                       {
                           City: 'New York',
                           StateProvince: 'NY',
                           Country: 'US'
                       },
                        {
                           City: 'New Britain',
                           StateProvince: 'CT',
                           Country: 'US'
                       }
                   ]});   */
        prefetch: 'ScriptLibrary/msqCity.php',
        remote: {
            url: 'ScriptLibrary/msqCity.php?City=%QUERY',
            wildcard: '%QUERY'
            }
        });

        $('#remote .typeahead').typeahead(null, {
            name: 'City',
            display: 'City',
            source: cities
        });
    </script>
</body>

任何方向都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

问题是查询是在带有html的php页面中。我删除了所有的html并离开了查询,现在很好。