Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

brshare

[Resolvido] jquery cortando palavras acentuadas

Recommended Posts

Ola pessoas onde ta o erro na parada abaixo? Quando input #secao é selecionado o input #categoria eh carregado porem o jquery esta cortando as palavas com acentos.

 

<?php
final class AcervoController extends ActionController{
	
	public function init(){
		$this->_request->setParam('format','json');
		$this->_helper->getHelper('AjaxContext')
					  ->addActionContext('getcategoriasbysecao','json')
					  ->initContext();
	}
		
	public function getcategoriasbysecaoAction(){
		if(!$this->_request->isXmlHttpRequest()){
			$this->_redirect("/");
		}
		$this->view->categorias = $this->createQuery()->from("Categoria as c")->where("c.cod_secao=?",$this->_request->getParam("secao"))->orderBy("c.nome")->execute()->toArray();
	}

$().ready(function(){
	
	$("#pesquisa form #secao").change(function(){
		if($(this).val()==''){
			$("#pesquisa form #categoria optgroup option").remove();
			$("#pesquisa form #categoria").attr("disabled",true);
			return false;
		}
		
		$('#pesquisa form #categoria').ajaxStart(function(){
			$(this).attr("disabled",true)
			$("#pesquisa form #categoria optgroup option").remove();
		});
		
		$('#pesquisa form #categoria').ajaxStop(function(){
			$(this).attr("disabled",false);
		});
		
		$.getJSON($('#baseurl').val()+'acervo/getcategoriasbysecao',{secao:$("#pesquisa form #secao").val()},function(data){
			$.each(data.categorias, function(i,categoria){
				$("#pesquisa form #categoria optgroup").append('<option value="'+categoria.cod+'">'+categoria.nome+'</option>');
			});
		});
	});
	
	
});

<div id="pesquisa">
    <div id="top"></div>
    <div id="body">
        <form method="post">
            <label for="keyword">Pesquisar por:</label>
            <input name="keyword" type="text" />
            <select name="criterio">
                <option>Titulo</option>
                <option>Descrição</option>
                <option>Autor</option>
                <option>ISBN</option>
            </select>
            <label for="secao">Filtrar por:</label>
            <select id="secao" name="secao">
                <option>Seção</option>
                <optgroup label="------------------------">
<?php foreach($this->secoes as $secao):?>
                    <option value="<?php echo $secao->cod;?>"><?php echo $secao->nome;?></option>
<?php echo "\n"; endforeach;?>
                </optgroup>              
            </select>
            <select disabled="disabled" id="categoria" name="categoria">
                <option>Categoria</option>
                <optgroup label="------------------------">
                </optgroup>
            </select>
        </form>
    </div>
    <div id="down"></div>
</div>

O resultado do html depois de renderizado fica mais ou menos assim:

 

   <select id="secao" name="secao">
       <option>Seção</option>
                <optgroup label="------------------------">
                    <option value="7">Administração</option>
                    <option value="10">Ciências exatas</option>
                    <option value="9">Direito</option>
                    <option value="5">Engenharia</option>
                    <option value="4">Geografia e História</option>
                    <option selected="informatica" value="1">Informática</option>
                    <option value="3">Literatura</option>
                    <option value="2">Medicina</option>
                    <option value="6">Religião</option>
                </optgroup>              
            </select>
            <select disabled="disabled" id="categoria" name="categoria">
                <option>Categoria</option>
                <optgroup label="------------------------">
                     <option value="1">An</option> //Aqui deveria ser Análise de Sistemas
                </optgroup>
            </select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro verifique onde esta o problema. Verifique se o response está com os valores corretos. Caso sim, o problema é com o Javascript.

 

Uma dica, um identificador refere-se a um elemento único, logo não é necessário representar a hierarquia de nós até o elemento: "#pesquisa form #secao"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro verifique onde esta o problema. Verifique se o response está com os valores corretos. Caso sim, o problema é com o Javascript.

 

Uma dica, um identificador refere-se a um elemento único, logo não é necessário representar a hierarquia de nós até o elemento: "#pesquisa form #secao"

 

O response esta correto, ja debuguei o problema esta quando o action controller passa para o view os dados neste caso nao sei se é o zend framework ou o jquery que esta fazendo o a conversão dos dados para o formato Json. sou novato com jquery e entao nao estou conseguindo debugar o jquery

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da um 'echo' no controller, chamando o endereço da requisiçao pelo browser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da um 'echo' no controller, chamando o endereço da requisiçao pelo browser.

 

Descobri o erro: por ser o JSON um formato de objeto em javascript (JavaScript Object Notation) e pelo simples fato de objetos em javascript não suportar acentos. simples não eh? a teoria explica a pratica...

 

http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom.

 

Voce pode usar acentos sim, desde que utilize UTF-8.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.