Ir ao conteúdo
  • Cadastre-se

Problemas com JSON.parse Jquery


Ir à solução Resolvido por denismartos,

Posts recomendados

Boa Noite pessoal,

 

Estou trabalhando em uma aplicação e preciso trazer dados com JSON, montei uma requisição ajax porém ocorre erro quando vou fazer o JSON.parse, segue o código !

 

Essa é a classe que traz o JSON do banco:

public function consultaProdutoJson($cod_produto) {				$this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);		if (!$this->db_connection->set_charset("utf8")) {        	$this->errors[] = $this->db_connection->error;        }		$sql = "SELECT P.id_produto, P.cod_produto, P.nome_produto, P.preco_produto, P.quantidade_produto, E.tipo_embalagem, S.tipo_segmento, F.nome_fornecedor 		FROM produtos P, segmento S, embalagem E, fornecedor F 		WHERE P.id_segmento = S.id_segmento 		AND P.id_embalagem = E.id_embalagem 		AND P.id_fornecedor = F.id_fornecedor		AND P.cod_produto = '" . $cod_produto . "'		;";		$result = $this->db_connection->query($sql);				$arr = Array();             if( $result->num_rows )             {                 while( $dados = $result->fetch_object() )                 {                     $arr['cod_produto'] = $dados->cod_produto;					 $arr['nome_produto'] = $dados->nome_produto;                     $arr['preco_produto'] = $dados->preco_produto;					 $arr['tipo_embalagem'] = $dados->tipo_embalagem;                 }             }				return json_encode($arr);	}

Esse é meu arquivo php que chama o mtodo da classe e escreve o JSON na tela:

<?phpini_set('display_errors', 1);ini_set('log_errors', 1);require_once("../config/db.php");require_once("../classes/Login.php");require_once("../classes/Produto.php");$login = new Login();if ($login->isUserLoggedIn() == true) {	$cod = $_GET["codigo"];    $produto = new Produto();	$result = $produto->consultaProdutoJson($cod);	echo $result;} else {    include("../views/not_logged_in.php");}?>

E esse é minha pagina que vai fazer a requisição:

<!doctype HTML><body>	<input id="codProduto" type="text">    <input id="json" type="text"><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script><script type="text/javascript">$("#codProduto").focusout(function(){	var cod = $("#codProduto").val();	$.ajax({      type: 'GET',      url: 'http://www.dmquimica.com.br/aDM/json/produtosJson.php',      data: {codigo:cod},      success: function(data) {      	var y = JSON.parse(data);		alert(y.nome_produto);	  }	});});</script></body></html>

Ocorre tudo certo o meu php que retorna o JSON imprimi isso tela:

{"cod_produto":"0001-00","nome_produto":"Estopa de 1\u00aa","preco_produto":"7.30","tipo_embalagem":"Pacote 2 kg"}

E no meu arquivo onde faço a requisição ele da o erro: Uncaught SyntaxError: Unexpected token

 

porém quando eu mando ele imprimir tela só o data que foi o que ele pegou da requisição da certo porém vem todo o json e não consigo transofrmar o JSON em objeto.

 

Bom quem puder ajudar, agradeço deis de já !

Link para o comentário
Compartilhar em outros sites

  • Moderador

Acredito que é porque a funçãi $.ajax() foi alterada desde a ultima versão do jQuery.

 

tenta fazer deste modo:

$(document).ready(function() {	$("#codProduto").focusout(function(){		var cod = $("#codProduto").val();		$.ajax({	      type: 'GET',	      url: 'http://www.dmquimica.com.br/aDM/json/produtosJson.php',	      data: {codigo:cod}	      }).done(function(data) {	    	    var y = JSON.parse(data);	    	    alert(y.nome_produto);	      })	  });});

Troque a versão do jquery para a 2.1.0 .. pois a função success foi substituída por .done().. assim como o error foi substituído por fail()

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

Fiz ocmo você falou mais nem a requisição ele conseguia fazer, após inúmeras, diversas e enormes tentativas hehehe...Ontem a noite desisti e hoje de manha sentei no pc e em 5 minutos consegui, da uma olhada no código como ficou, usei a função $getJson.

$("#codProduto").focusout(function(){	var cod = $("#codProduto").val();	$.getJSON("http://www.dmquimica.com.br/aDM/json/json.php",{codigo:cod}, function(info){    	var titulo = info.nome_produto;		alert(titulo);    });});

Muito obrigado a todos que leram e principalmente a quem tomou um pouco de seu tempo tentando ajudar !

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

Realmente esqueci que existia uma função específica para o json. também notei que no meu post, esqueci que deveria adicionar a linha: dataType: 'json'    rsrsrs sem isso ele não faria mesmo a requisição. Desculpe pela minha falha.

 

Legal que conseguiu. Boa sorte no seu projeto.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...