Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho uma consulta de autocomplete no bd que funciona no servidor local e não roda no servidor da web.
Ao enviar a consulta no servidor local aparece no console :Fetch terminou o carregamento: GET ".../Cidade?cidade=sao%20paulo". A pesquisa é feita normalmente.
Quando mando a mesma pesquisa para o servidor web(locaweb) aparece no console: Fetch terminou o carregamento: GET "..../Cidade?cidade=sao%2520paul".
O número 25 aparece só no servidor web. Pelo que pesquisei 25 significa %, ou seja, está duplicando o caractere %.
Não consegui utilizar nenhuma função para evitar que isto ocorra. Alguém sabe se há alguma configuração no servidor web que possa ser alterada para evitar essa duplicação?
Boa tarde Albano.
O código é aquele que você me ajudou a montar. Só percebi o erro por coincidência ao escrever São Paulo no site hospedado.
Para resolver definitivamente eu preciso resolver esta questão e também ver se consigo alimentar o auto complete com dados para edição. Tentei if com php e js, mas não consegui.
PS. Desculpe a demora para responder, não sei porque o fórum não está mandando mensagem de nova postagem para mim, apesar de ter assinalado o campo de "envie notificação".
<div class="form-group ">
<label for="cidade"></label>
<small id="helpId" class="form-text font-weight-bold">cidade<span class="text-danger">*</span></small>
<input type="text" class="form-control" id="cidade" placeholder="Pesquisar cidade" onkeyup="carregar_cidade(this.value)">
</div>
async function carregar_cidade(valor) {
if (valor.length >= 3) {
// console.log("Pesquisar:" + valor);
const dados = await fetch('/Cidade/?cidade='+valor, {
method: "get",
headers: {
"Content-Type": "application/json",
"X-Requested-With": "XMLHttpRequest"
}
});
const resposta = await dados.json();
//console.log(resposta);
let html = "<ul class='list-group '>";
const lis= resposta.map(({ cid_nome, cid_uf, cid_id }) => "<li class='list-group-item list-group-item-action' data-id='"+cid_id+"'>" + cid_nome + '-' + cid_uf + "</li>")
html += lis.join('') + "</ul>";
resultado_pesquisa.innerHTML = html;
//console.log(resultado_pesquisa)
}
}
resultado_pesquisa.addEventListener('click', ({ target }) => {
if (target.matches('li')) {
cidade.value = target.innerText
fk_cidade.value = target.dataset.id
resultado_pesquisa.innerHTML=''
//console.log(target)
}
})>
23 horas atrás, washalbano disse:
Olá!
Como essa variável está sendo enviada para a url?
O sr. está usando algum tipo de url_encode?
<?php
namespace App\Controllers;
use App\Models\CidadeModel;
/** Busca a cidade no banco de dados */
class Cidade extends BaseController{
protected $tbCidades;
public function __construct(){
$this->tbCidades = new CidadeModel();
}
public function index(){
//dd($this->response);
$request = \Config\Services::request();
$client = \Config\Services::curlrequest();
$cidades=[];
if($get=$request->getGet()){
$cidadeFiltrada=$this->tbCidades->getCidByName($get['cidade']);
return $this->response->setStatusCode(200)
->setContentType('application/json')
->setJSON($cidadeFiltrada);
}
}
}>
Em 30/11/2023 at 18:41, washalbano disse:
Olá!
Como essa variável está sendo enviada para a url?
O sr. está usando algum tipo de url_encode?
Albano, consegui corrigir o erro de passagem da variável. Era uma / a mais no Java script. Ficou assim:
'/CadClientes/city?cidade='+valor,
Antes tinha uma barra após o city. Muito obrigado pela ajuda e paciência. Abraços.
Olá!
Como essa variável está sendo enviada para a url?
O sr. está usando algum tipo de url_encode?