Typeahead在jqGrid的对话框编辑中不起作用

时间:2015-08-23 03:48:59

标签: jqgrid typeahead

我尝试从the official demo等服务器响应json。

但是下拉的暗示并没有显现出来。

有谁能告诉我我错过了什么? 我只更改了演示代码中的url:

{
    label: 'Ship Name2',
    name: 'ShipName2',
    width: 150,
    editable: true,
    edittype: "text",
    editoptions: {
        dataInit: function (element) {
           $(element).attr("autocomplete","off").typeahead({ 
               appendTo : "body",
                source: function(query, proxy) {
                    $.ajax({
                        url: 'mysite',
                        dataType: "jsonp",
                        data: {term: query},
                        success : proxy
                    });
                }
           });
        }
    }
}, {
    label: 'Ship Name',
    name: 'ShipName',
    width: 150,
    editable: true,
    edittype: "text",
    editoptions: {
        dataInit: function (element) {
           $(element).attr("autocomplete","off").typeahead({ 
               appendTo : "body",
                source: function(query, proxy) {
                    $.ajax({
                        url: 'http://trirand.com/blog/phpjqgrid/examples/jsonp/autocompletepbs.php?callback=?&acelem=ShipName',
                        dataType: "jsonp",
                        data: {term: query},
                        success : proxy
                    });
                }
           });
        }
    }
}

P.S。我的servlet返回相同的json,这与demo&#39>完全相同。

谢谢!

编辑1:如果我想在这个演示中使用typeahead,那么响应应该不仅仅是一个json吗?

如果我在演示中执行url,我会得到以下javascript而不是json:

<script type='text/javascript'>
    jQuery(document).ready(function() {
        if(jQuery.ui) { 
            if(jQuery.ui.autocomplete){
                jQuery('ShipName').autocomplete({
                    "appendTo":"body",
                    "disabled":false,
                    "delay":300,
                    "minLength":1,
                    "source":function (request, response){
                        request.acelem = 'ShipName';
                        request.oper = 'autocmpl';
                        $.ajax({
                            url: "autocompletep.php",
                            dataType: "json",
                            data: request,
                            type: "GET",
                            error: function(res, status) {
                                alert(res.status+" : "+res.statusText+". Status: "+status);
                            },
                            success: function( data ) {
                                response( data );
                            }
                        });
                }});
                jQuery('ShipName').autocomplete('widget').css('font-size','11px');
                jQuery('ShipName').autocomplete('widget').css('z-index','1000');
            } 
        }
    });
</script>

有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:0)

该演示使用JSONP获取数据。如果您在本地站点,则需要删除calcback =?参数。

非常基本的testis不是在typeahead中使用ajax,而是在数组中使用数组。这样你就可以确定这项工作是正确的