Usando o plugin jQuery validate com a opção “remota”

Estou usando o plugin jQuery validate e sua opção remota para verificar a existência de um nome de usuário a partir de um campo de input. Eu uso esse código:

remote : { url :'ajax_php/admin/checking.php', type :'post', data : { type:'username' }} 

Eu notei que o URL da solicitação tem um parâmetro de retorno de chamada anexado, mesmo que eu configurei o tipo de solicitação para post :

 http://localhost/lopoli2/ajax_php/admin/checking.php?callback=jQuery15104128487491980195_1311232389069 

Meu script PHP funciona bem e retorna true para o nome de usuário válido e uma string para nomes de usuários inválidos. Mas nenhuma mensagem de erro aparece! Meu arquivo PHP em resumo parece assim:

 $check = mysql_query("select `username` from `user_tbl` where `username`='".$_POST['username']."' ",$conn) or die('Error In DB !'); if (mysql_num_rows($check)>0){ echo("username is already exists"); }else{ echo("true"); } 

Aqui está o que eu quero saber:

  • Para que serve o parâmetro de retorno de chamada?
  • Como resolver o problema da “mensagem de erro de exibição”?

Tente mudar:

 echo("username is already exists"); 

para

 echo("false"); 

Eu acho que você precisa retornar verdadeiro ou falso no seu script php. Então você pode configurar sua mensagem de erro usando uma mensagem de erro personalizada usando o parâmetro de mensagens em seu object de opções.

Também acho que seu param de dados configurado está errado. Parece assim nos documentos. Embora, você menciona que funciona, então talvez uma versão diferente? (http://docs.jquery.com/Plugins/Validation/Methods/remote#options)

 remote: { url: 'ajax_php/admin/checking.php',, type: "post", data: { username: function() { return $("#username").val(); } } } 

Então, no seu script do script php ‘true’ ou ‘false’. Você pode configurar a mensagem de erro usando o plugin de validação jquery

 $check = mysql_query("select `username` from `user_tbl` where `username`='".$_POST['username']."' ",$conn) or die('Error In DB !'); if (mysql_num_rows($check)>0){ echo 'false'; }else{ echo "true"; } 

Veja como você adiciona um parâmetro de mensagem (http://docs.jquery.com/Plugins/Validation/validate#options)

 $(".selector").validate({ rules: yourRules, messages: { username: { remote: "Username already exists" } } }) 

O valor retornado é considerado um booleano (verdadeiro / falso) ou uma string (será tratado como falso e exibirá o texto retornado).

Além disso, é importante definir a saída para texto / javascript ou texto / simples usando o header (‘content-type: text / plain’);

Então, no php, ao retornar o valor, você deve prestar atenção ao tipo do valor retornado da seguinte maneira:

Echo ‘verdade’; // => true, um booleano. Diz que o resultado da validação é verdade e tudo está bem.

ecoar “falso”; // => false, um booleano. Diz que o resultado da validação é errado e exibe uma mensagem configurada no object do validador

eco “falso” “; // => “false”, uma string. Diz que o resultado da validação é errado e exibir a string retornada será exibida como um erro.