Recentemente tive um problema ao usar o plugin autocomplete. No projeto que eu estava desenvolvendo, precisa que os dados do autocomplete, fossem passados via POST para o Code Igniter (Por segurança).

Por default o plugin passa os dados via GET,  aí pensei! ferro!.

Perdi um pouco de tempo e fui o olhar o código do plugin, notei que o puglin é implementa o $.ajax do JQUERY, então era só acrescentar o “type”, pronto!, simples não!.

Veja como era antes:

$.ajax({
	// try to leverage ajaxQueue plugin to abort previous requests
	mode: "abort",
	// limit abortion to this input
	port: "autocomplete" + input.name,
	dataType: options.dataType,
	url: options.url,
	data: $.extend({
		q: lastWord(term),
		limit: options.max
	}, extraParams),
	success: function(data) {
		var parsed = options.parse && options.parse(data) || parse(data);
		cache.add(term, parsed);
		success(term, parsed);
	}
});

Veja agora como ficou:

$.ajax({
	// try to leverage ajaxQueue plugin to abort previous requests
	mode: "abort",
	type: "post", //Apenas essa linha foi adicionada
	// limit abortion to this input
	port: "autocomplete" + input.name,
	dataType: options.dataType,
	url: options.url,
	data: $.extend({
		q: lastWord(term),
		limit: options.max
	}, extraParams),
	success: function(data) {
		var parsed = options.parse && options.parse(data) || parse(data);
		cache.add(term, parsed);
		success(term, parsed);
	}
});

Agora para fazer a recuperação dos dados você só precisa usar o $_POST ao invés do $_GET.

<?php

$autocomplete = $_GET['q']; // Antes.
$autocomplete = $_POST['q']; // Depois.

$autocomplete = $this->input->get('q'); // Antes -> Code Igniter.
$autocomplete = $this->input->post('q'); // Depois -> Code Igniter.

?>

Fica dica, para quem precisar deixar o autocomplete um pouco mais seguro.

Até mais.