Select2:结果未显示使用AJAX

时间:2013-06-16 20:02:16

标签: javascript ajax jsonp jquery-select2

我无法使用AJAX将结果显示在Select2中。 这是我的代码:

$(document).ready(function() {
    $("#producto").select2({
        placeholder: 'Select a product',
        formatResult: productFormatResult,
        formatSelection: productFormatSelection,
        dropdownClass: 'bigdrop',
        escapeMarkup: function(m) { return m; },
        minimumInputLength:3,
        ajax: {
            url: 'http://foo.foo/listar.json',
            dataType: 'jsonp',
            data: function(term, page) {
                return {
                    q: term
                };  
            },  
            results: function(data, page) {
                return {results:data};
            }   
        }   
    });


function productFormatResult(product) {
    var html = "<table class='product-resultado'><tr>";
    if(product.img != undefined) {
        html += "<td class='product-image'><img src='"+product.img+"'/></td>";
    }
    html += "<td class='product-info'>";
    html += product.text + "<br />";
    html += product.precio_costo + " CRC <br />";
    html += "Existencias: " + product.existencias;
    html += "</td></tr></table>";
    return html;
}

function productFormatSelection(product) {
    return product.text;
}

使用Javascript控制台,我看到请求返回了预期的JSON: Javascript Console

  

[

     

{“text”:“Foo Product”,“img”:“#”,“precio_costo”:   45,“existencias”:0,“id”:2}

     

我相信结果:function(data, page) { ... }没有被调用,因为我在那里发出警报而没有任何事情发生。

它只是挂在那里等待结果: Hangs waiting for results

2 个答案:

答案 0 :(得分:11)

我猜你要回json而不是jsonp,

所以尝试将行dataType: 'jsonp'更改为dataType: 'json', 甚至删除整条线。

我以前经历过同样的经历。 json结果按此标准筛选出来, 即使实际返回了预期的JSON,也很可能是因为 json和jsonp被视为两种不同的格式

PS:这更像是评论,但由于我不能评论你的问题,请耐心等待我

答案 1 :(得分:0)

我认为你不能从ajax调用中返回一个值。因为ajax调用是asynchronous。而是自己处理结果。或使用下面链接中给出的callback functions

请参阅jQuery: Return data after ajax call success