The jQuery Validate libraries "remote" parameter uses GET method for AJAX calls. If nothing is given as the "type" parameter in $.ajax() method, GET is taken by default. But working with PHP with some famous framework like codeigniter which normally don't work with GET method in URL makes it difficult to use the remote parameter. So in the Validate plugin, it should be specified type : "POST" in the following method around line 878 of jquery.validate.js (1.4).
remote: function(value, element, param) { if ( this.optional(element) ) return "dependency-mismatch"; var previous = this.previousValue(element); if (!this.settings.messages[element.name] ) this.settings.messages[element.name] = {}; this.settings.messages[element.name].remote = typeof previous.message == "function" ? previous.message(value) : previous.message; if ( previous.old !== value ) { previous.old = value; var validator = this; this.startRequest(element); var data = {}; data[element.name] = value; $.ajax({ url: param, mode: "abort", port: "validate" + element.name, dataType: "json", data: data, success: function(response) { if ( !response ) { var errors = {}; errors[element.name] = response || validator.defaultMessage ( element, "remote" ); validator.showErrors(errors); } else { var submitted = validator.formSubmitted; validator.prepareElement(element); validator.formSubmitted = submitted; validator.successList.push(element); validator.showErrors(); } previous.valid = response; validator.stopRequest(element, response); } }); return "pending"; } else if( this.pending[element.name] ) { return "pending"; } return previous.valid; },