Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Estou desenvolvendo um sistema de pesquisa pelo método get. Passo 4 parâmetros pela pesquisa.
Para montar a url amigável, uso .htaccess. Para fazer a url amigável da pesquisa, faço da seguinte forma (sem pesquisa por get):
RewriteRule ^resultado/([0-9-]+)/([a-z0-9-]+)/?$ paginas/resultado.php?pag=$1&p=$2 [NC,L]
Gostaria de saber se tem alguma forma de fazer com que a pesquisa saia do formulário com url amigável, atualmente está retornando desta forma: http://localhost/102/resultado/?pesquisar_empresa=Pesquisar+empresas&ramo_pesquisa=&estado_pesquisa=09&cidade_pesquisa=2272
Obrigado pela atenção.
Boa tarde Williams,
Não consegui alterar os espaços em branco nas palavras digitadas no campo text, exemplo:
Digitou: valor para pesquisar
Retornar: valor+para+pesquisar
Está retornando: valor+para pesquisar
Como inserir o + em todos espaços em branco na frase digitada?
jQuery('#pesquisar').submit(function() {
var empresa = jQuery('#pesquisar_empresa').val().replace(' ','+');
var segmento = jQuery('#ramo_pesquisa').val();
var estado = jQuery('#estado_pesquisa').val();
var cidade = jQuery('#cidade_pesquisa').val();
window.location.href = empresa + "/" + segmento + "/" + estado + "/" + cidade + "/";
return false;
});
Obrigado pela atenção.
eu uso URLify
Exemplo para slugs
if ($('.urlify').length) {
$('.urlify').keyup(function() {
var slug = URLify($(this).val());
var update = ($('.urlify').attr('rel') || '').split(',');
for (var item in update) {
var obj = $(update[item]);
if (obj.is('input')) {
obj.val(slug);
} else {
obj.text(slug);
}
}
});
}Está quase funcionando. Se a url ficar assim: http://localhost/102/resultado/esteumeventoteste/11/09/2011/ funciona, se ficar assim: http://localhost/102/resultado/este+um+evento+teste/11/09/2011/ da página não encontrada.
Como resolver?
Você pode usar replace pare remover o + ou até mesmo substituir por outro caractere
valor = valor.replace('+', '');
e ainda da para filtrar e validar os dados com regex
valor = valor.replace(/[^a-zA-Z_0-9-]/g, '');
Edit:
Para funcionar os sinais + - ou _
teria que que alterar a regex na RewriteRule
Abraços!
Achei o problema. Meu .htaccess estava bloqueando o +. Vou utilizar ele para separar as palavras quando receber os valores no php.
Obrigado Williams.
Enquanto eu editava sobre o .htaccess você também estava respondendo.
Que bom que resolveu!
Sucesso! :thumbsup:
Williams,
Reparei aqui que só entra no .submit se preencher todos os campos. Como faço para não ter essa obrigatoriedade? Ao invés de entrar no .submit usa o action do form. Testei com um alert dentro desta função.
jQuery('#pesquisar').submit(function() {
var empresa = formata_url(jQuery('#pesquisar_empresa').val());
var segmento = (jQuery('#ramo_pesquisa').val() === '') ? '0' : jQuery('#ramo_pesquisa').val();
var estado = (jQuery('#estado_pesquisa').val() === '') ? '0' : jQuery('#estado_pesquisa').val();
var cidade = jQuery('#cidade_pesquisa').val();
location.href = "<?php echo URL; ?>resultado/" + empresa + "/" + segmento + "/" + estado + "/" + cidade + "/";
return false;
});Já tentou com click?
Faz uns teste com if else neste code acima!
$('#button').click(function() {
....
}Teste aqui agora, mesmo erro. Se não preencher tudo ele não entra na função.
amigo joga nas var primeiro depois faça validações, da forma como você esta fazendo eu desconheço.
$(document).ready(function() {
$('#pesquisar').submit(function(e) {
// verificação de erro foi realizada
e.preventDefault();
var pesquisar = $('#pesquisar_empresa').val();
var ramo = $('#ramo_pesquisa').val();
var estado = $('#estado_pesquisa').val();
var cidade = $('#cidade_pesquisa').val();
if( pesquisar == '' ){
pesquisar = false;
}
//Restante da validações
}
});
Monte o redirect quando a variáveis retornar true.
Se tiver dificuldade posso mover para o fórum de Javascript, só avisar!
Abraços
O que estou achando estranho é que não entra na função se ficar algum campo sem preencher. Ele dá um refresh na página, não passa pelo jquery.
:huh: Isso é estranho!
Abre um novo tópico na área de Javascript, JS não é muito a minha praia, faço somente coisas básicas para hobby e só em Jquery por sinal.
Ha duas formas de se fazer isso!
Javascript e php
Segue a lógica
php ao enviar o form redireciona como url amigável
exemplo em javascript