【问题标题】:How to make ajax call in bootstrap typehead如何在引导输入中进行 ajax 调用
【发布时间】:2013-01-12 07:25:24
【问题描述】:

这是我的 jquery 代码,用于从本地源设置引导字体

    $(function () {

    var src = [{ id: 1, name: 'Toronto', state: 'ON', country: 'Canada', key: 12345 },
                    { id: 2, name: 'Montreal', state: 'QC', country: 'Canada', key: 23456 },
                    { id: 3, name: 'New York', state: 'NY', country: 'USA', key: 34567 },
                    { id: 4, name: 'Buffalo', state: 'NY', country: 'USA', key: 45678 },
                    { id: 5, name: 'Boston', state: 'MA', country: 'USA', key: 56789 },
                    { id: 6, name: 'Columbus', state: 'OH', country: 'USA', key: 67890 },
                    { id: 7, name: 'Dallas', state: 'TX', country: 'USA', key: 78901 },
                    { id: 8, name: 'Vancouver', state: 'BC', country: 'Canada', key: 89102 },
                    { id: 9, name: 'Seattle', state: 'WA', country: 'USA', key: 90123 },
                    { id: 10, name: 'Los Angeles', state: 'CA', country: 'USA', key: 11234}];

    localStorage.setItem("cities", JSON.stringify(src));

    $('#search').typeahead({
        sources: [
        { name: "local", type: "localStorage", key: "cities" }
      ]
    });

});

它工作正常。 如何从服务器进行 ajax 调用并将如上所示的类似数据与源连接。

update: 这是 jsfiddle 上的上述工作代码http://jsfiddle.net/MMarW/

这是 jsfiddle 上没有触发 http://jsfiddle.net/FZP8a/3/ 的 ajax 代码

【问题讨论】:

    标签: javascript jquery bootstrap-typeahead


    【解决方案1】:

    提供函数作为源:

    $('#search').typeahead({
      source: function(query, process) {
        var searchUrl = YOUR_URL + '?q=' + encodeURIComponent(query);
    
        $.get(searchUrl)
        .success(function(data){
          //... do whatever you want...
          // ... and pass array to process function
          process(dataArray);
        })
        .error(function(){
          //...handle error
        });
      }
    });
    

    您也可以直接从源函数返回 dataArray。更多信息请参阅选项下的docs

    编辑:要请求 jsonp,请使用 jQuery.ajax:

    $('#search').typeahead({
      source: function(query, process) {
        var searchUrl = YOUR_URL + '?q=' + encodeURIComponent(query);
    
        $.ajax(searchUrl, {
           dataType: 'jsonp',
           crossDomain: true // probably needed
        }).success(function(data){
          //... do whatever you want...
          // ... and pass array to process function
          process(dataArray);
        }).error(function(){
          //...handle error
        });
      }
    });
    

    jQuery.ajax docs获取更多关于jsonp的信息

    实际上 $.get 只是 $.ajax 的简写。

    【讨论】:

    • 我以 jsonp 格式获取数据,所以我必须使用 jsonpcallback 函数,所以在 dat 情况下如何使用 .success
    • 是否可以使用回调函数代替成功
    • 我只是按照你所说的方式尝试过,但 ajax 根本没有触发
    • 在控制台/firebug/etc中调试
    • 我试过了,但是调用来自源部分,但随后又返回到成功部分或错误部分。如果我将它托管在某个地方,你介意看看吗?
    猜你喜欢
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 2023-04-03
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多