Na mesma página estou usando caracteres acentuados, caracteres especiais, e exibe corretamente, apenas no combo que é alimentado via AJAX a acentuação tá dando erro...
function list_dados( valor ){
http.open("GET", "result2.php?categoria=" + valor, true);
http.onreadystatechange = handleHttpResponse;
http.send(null);
}
function handleHttpResponse(){
var campo_select = document.forms.a_b.subcategoria;
if (http.readyState == 4) {
campo_select.options.length = 0;
var results = http.responseText.split(",");
for( i = 0; i < results.length; i++ ) {
var string = results[i].split( "|" );
campo_select.options[i] = new Option( string[0], string[1] );
}
}
}
function getHTTPObject() {
var req;try {
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
if (req.readyState == null) {
req.readyState = 1;
req.addEventListener("load", function () {
req.readyState = 4;
if (typeof req.onReadyStateChange == "function")
req.onReadyStateChange();
}, false);
}
return req;
}
if (window.ActiveXObject) {
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
for (var i = 0; i < prefixes.length; i++) {
try {
req = new ActiveXObject(prefixes[i] + ".XmlHttp");
return req;
}
catch (ex) {};
}
}
}
catch (ex) {}
alert("Seu navegador não suporta objetos XmlHttp");
}
var http = getHTTPObject();
// Logo após fazer a verificação, é chamada a função e passada // o valor à variável global http.
Esse arquivo faz a consulta solicitada pelo AJAX:
<?php //Dados do MySQL
$host = "localhost"; // servidor.
$user = "###########"; // nome do usuário.
$pass = "###########"; // senha do usuário.
$banco = "############"; // nome do banco de dados.
//NÃO ALTERE NADA ABAIXO.
mysql_connect($host, $user, $pass);
mysql_select_db("adminpt_classificados");
// Guardando o id passado pelo form select
// Trim remove os espaços no inicio e final
// addslashes Retorna uma string com barras invertidas antes de caracteres
// que precisam ser escapados para serem escapados em query a banco de dados
$categoria = addslashes(trim($_GET["id"]));
// Fazendo nosso selec para todas subcategorias que pertencem à categoria presente
// na variavel $categoria acima
$consulta = mysql_query("SELECT * FROM tbl_subcategoria WHERE categoria = '$categoria' ORDER BY nome ASC" );
while( $row = mysql_fetch_assoc($consulta) ){
// subcategoria será apresentada da forma "NOME|CODIGO,..."
// Maneira a ser tratada no JavaScript
// Vale lembrar que estamos contatenando o "nome" com a "|" com o "codigo" e com a ","
echo $row["nome"] . "|" . $row["codigo"] . ","; }
?>
Se eu colocar o cabeçalho html, com head, as metas para determinar o charset, encoding no arquivo que faz a pesquisa, não exibe nada dentro do combo, ele vira uma linha bem fina.
Quando eu coloco um charset totalmente diferente do iso-5589-1, todos os caracteres da página deixam de exibir, mas quando o charset tá correto só o combo exibe os dados errados.
Se dentro do banco de dados eu escrever os nomes usando seqüências de escape, eles não são convertidos para a letra correspondente, exibe a própria sequência, exemplo á deveria exibir á, mas exibe o próprio código á ....
Pergunta
Gutto
Na mesma página estou usando caracteres acentuados, caracteres especiais, e exibe corretamente, apenas no combo que é alimentado via AJAX a acentuação tá dando erro...
Já alterei o encoding, charset... Nada resolveu.
O script é esse, peguei a base nesse tuto da revistaphp.
Esse arquivo faz a consulta solicitada pelo AJAX:Se eu colocar o cabeçalho html, com head, as metas para determinar o charset, encoding no arquivo que faz a pesquisa, não exibe nada dentro do combo, ele vira uma linha bem fina.
Quando eu coloco um charset totalmente diferente do iso-5589-1, todos os caracteres da página deixam de exibir, mas quando o charset tá correto só o combo exibe os dados errados.
Se dentro do banco de dados eu escrever os nomes usando seqüências de escape, eles não são convertidos para a letra correspondente, exibe a própria sequência, exemplo á deveria exibir á, mas exibe o próprio código á ....
Editado por GuttoLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.