Jquery autocomplete: Uncaught TypeError: Cannot call method 'toLowerCase' of undefined

Olá pessoal, estuo com um problema com jquery+ajax+autocomplete, e debugando com o firebug tenho o seguinte erro:

No firefox:

g.nodeName is undefined c=f.valHooks[g.type]||f.valHooks[g.nodeName.toLowerCase()]; jquery....min.js (linha 977)

No chrome:

Uncaught TypeError: Cannot call method 'toLowerCase' of undefined jquery-1.7.2.min.js:977
f.fn.extend.val jquery-1.7.2.min.js:977
$.autocomplete.source novo:77
a.widget._search jquery-ui-1.8.18.custom.min.js:127
a.widget.search jquery-ui-1.8.18.custom.min.js:127
(anonymous function)

Alguém pode me ajudar, estou a algumas horas quebrando a cabeça com isto e nada, esotu usadno jquery 1.7.2-min completo, e segui este tutorial http://www.jensbits.com/2011/08/24/using-jquery-autocomplete-when-remote-source-json-does-not-contain-label-or-value-fields/ onde funciona, mas aqui localmente não funcionou, já utilizei em meu código outras funções ajax e da bibiloteca jquery e e funcionou, creio que o erro é em algo neste código.

Meu json retorna o seguinte, garanto tal retorno a vocês.

Minha função javascript:

 $('#accadempresa').autocomplete({
            source: function(request, response) {
                $.ajax({
                    url: '/ajax.php?action=available&orm=cadempresa&campo=razsoc&valor=' + $(this).val(),
                    dataType: "json",
                    data: {term: request.term},
                    success: function(data) {
                        response($.map(data, function(item) {
                            return {
                                id: item.id,
                                campo: item.campo
                            };
                        }));
                    }
                });
            },
            minLength: 2,
            select: function(event, ui) {
                alert('ae');
                //$('#state_id').val(ui.item.id);
                //$('#abbrev').val(ui.item.abbrev);
            }

        });

Douglasjam, você conseguiu resolver esse problema que vc postou aqui? Estou com o mesmo problema e não sei como resolver também.

Boa tarde jovem,

Não lembro muito bem a solução não, mas acho que é porque os nomes devem ser id e value para o retorno, porém segue meus códigos após algumas adaptações para se tornar um pouco genérico (nota uso php aqui).

Que a força esteja com você!

protected function get() {

        $this->auto_render = FALSE;

        // TODO: Restringir para apenas requisições do servidor
        $ormName = Request::current()->query('orm', NULL);
        $campo = Request::current()->query('campo', NULL);
        $valueName = Request::current()->query('term', NULL);

        $retorno = null;

        if ($ormName != NULL) {

            $itens = ORM::Factory($ormName)
                    ->get_complete_orm()
                    ->where($campo != "tostring" ? $campo : DB::expr(ORM::Factory($ormName)->get_tostring_pattern()), "LIKE", '%' . $valueName . '%')
                    ->order_by(DB::expr(ORM::Factory($ormName)->get_tostring_pattern()), 'ASC')
                    ->limit(5)
                    ->find_all();

            foreach ($itens as $item) {
                if ($campo != 'tostring') {
                    $value = $item->as_array();
                    $value = $value[$campo];
                } else {
                    $value = $item->toString();
                }
                $retorno[] = array('id' => $item->id, 'value' => $value);
                //$retorno[] = array($item->toString());
            }
        }

        $jsonEncoded = json_encode($retorno);

        $this->request->headers('Content-type', 'application/json; charset=' . Kohana::$charset);
        $this->response->body($jsonEncoded);
    }
function getAutoComplete(campoID, campoTexto, orm, campo){
    $(campoTexto).autocomplete({
        source: '/ajax.php?action=get&orm=' + orm + '&campo=' + campo,
        minLength: 0,
        selectFirst: true,
        autoFocus: true,
        select: function(event, ui) {
            // Quando o autocomplete trazer o resultado da consulta, vai atribuir nos campos correspondentes
            $(campoID).val(ui.item.id);
            
            if (this.isModified)
                $(campoID).setValue("");
            
            $(campoID).change();
            
            if (this.value.length < 1 && this.isNotClick)
                return;
        
        
        },
        
        change: function(event, ui) {
        /*        $(campoID).val(ui.item ? ui.item.id : "");                
            $.getJSON('/ajax.php?action=isvalid&orm=' + orm + '&campo=id&valor=' + $(campoID).val(), function(json) {
                // Todo: Caso queira fazer algum tratamento extra.
                //alert(json.message); //$("#tabbairrovalido").html(json.message);
            });*/
        }
    });
}