Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola pessoal,
Como faço a leitura pelo Jquery em um arquivo php no formato JSON
função JQUERY{
function diaSemana(){ // declaro o início do jquery
//$("#txtData").blur( function(){//botão para disparar a ação
var vData = $("#txtData").val();
var vAlId = $("#vAlId").val()
var vReuniaodia = $("#txtReuniaodia").val();
$.get("validaDiaSemana.php?vData="+vData+"&vAlId="+vAlId+"&vReuniaodia="+vReuniaodia,function(data){
$("#diaSemana").show();
$("#diaSemana").html(data);
});
};
php
$data = trim($_GET['vData']);
$reuniaoDia = trim($_GET['vReuniaodia']);
if(!empty($data))
{
$vData = converte_data($data);// formata para: 2016-04-28
$vDiaSemana = diasemana($vData);// retorna: 5
$vDiaSemanaCompleto = $diasemanacompleto[$vDiaSemana];//retorna: quinta-feira
$teste = $vDiaSemanaCompleto;
if($reuniaoDia <> $vDiaSemana){
$teste1 = '1';
}else{
$teste1 = '0';
}
}
$retorno = array(
"vDiaSemanaCompleto" => $teste,
"reuniaoDia" => $teste1,
);
$json = json_encode($retorno);
echo $json;
?>
Neste exemplo quero pegar o valor do array $retorno: vDiaSemanaCompleto e o valor: reuniaoDia em seguida atribui a uma variável no javascript
ola vlw pela resposta..
tentei fazer desta forma mas não aparece nada:
function diaSemana(){ // declaro o início do jquery
//$("#txtData").blur( function(){//botão para disparar a ação
var vData = $("#txtData").val();
var vAlId = $("#vAlId").val()
var vReuniaodia = $("#txtReuniaodia").val();
$.get("validaDiaSemana.php?vData="+vData+"&vAlId="+vAlId+"&vReuniaodia="+vReuniaodia,function(data){
//$('#retorno').html(data);//onde vou escrever o resultado
//if(data == 'S' ){
//$("#validaUsuario").html(data);//onde vou escrever o resultado
//$("#validaUsuario").show();
$("#diaSemana").show();
var teste = data.vDiaSemanaCompleto;
$("#diaSemana").html(teste);//onde vou escrever o resultado
//});
});
};
agora se eu deixo apenas:
$("#diaSemana").html(data);//onde vou escrever o resultado
o Resultado é este:
{"vDiaSemanaCompleto":"sexta-feira","reuniaoDia":"1"}
Quando utilizado jQuery, todos os retornos, por default, são considerados HTML. Você deve especificar que estará retornando um json. Se não é apenas uma simples string.
Se não me engano, existe o método:
$.getJSON(
Que é similar ao $.get, mas retorna um json.
De outra forma, utilize o método $.ajax e defina o dataType como json:
$.ajax(
dataType: 'JSON'
entendi, alterei o código usando o:
$.ajax(
dataType: 'JSON'
mas não retorna nada..
javaScript:
function diaSemana(){
var vData = $("#txtData").val();
var vAlId = $("#vAlId").val()
var vReuniaodia = $("#txtReuniaodia").val();
$.ajax({
type: "get",
dataType: 'JSON',
url: "validaDiaSemana.php",
//data: {vData: vData,vAlId : vAlId, vReuniaodia : vReuniaodia},
data: 'vData='+ vData +'&vAlId='+ vAlId +'&vReuniaodia='+vReuniaodia,
success: function(sucesso){
//alert("Teste");
$("#diaSemana").show();
//var teste = sucesso.vDiaSemanaCompleto;
$("#diaSemana").html(sucesso.vDiaSemanaCompleto);//onde vou escrever o resultado
}
}
)};
php
<?php
include('conexao/database.php');
include('php/biblioteca.php');
$data = trim($_GET['vData']);
$reuniaoDia = trim($_GET['vReuniaodia']);
if(!empty($data))
{
$vData = converte_data($data);// formata para: 2016-04-28
$vDiaSemana = diasemana($vData);// retorna: 5
$vDiaSemanaCompleto = $diasemanacompleto[$vDiaSemana];//retorna: quinta-feira
$teste = $vDiaSemanaCompleto;
if($reuniaoDia <> $vDiaSemana){
$teste1 = '1';
}else{
$teste1 = '0';
}
}
$retorno = array(
"vDiaSemanaCompleto" => $teste,
"reuniaoDia" => $teste1,
);
$json = json_encode($retorno);
echo $json;
?>Pessoal, alguma ideia?
Adicione o callback de erro e olhe o log do navegador (CTRL + SHIFT + J no firefox). Veja se aparece algum erro. Use o Firebug e verifique os retornos.
function diaSemana(){
var vData = $("#txtData").val();
var vAlId = $("#vAlId").val()
var vReuniaodia = $("#txtReuniaodia").val();
$.ajax({
type: "get",
dataType: 'JSON',
url: "validaDiaSemana.php",
//data: {vData: vData,vAlId : vAlId, vReuniaodia : vReuniaodia},
data: 'vData='+ vData +'&vAlId='+ vAlId +'&vReuniaodia='+vReuniaodia,
success: function(sucesso){
//alert("Teste");
$("#diaSemana").show();
//var teste = sucessovDiaSemanaCompleto;
// modifiquei essa parte, não testei mas sempre que pego retorno do json uso assim.
$("#diaSemana").html(sucesso['vDiaSemanaCompleto']);//onde vou escrever o resultado
}
}
)};
linha modificada
$("#diaSemana").html(sucesso['vDiaSemanaCompleto']);//onde vou escrever o resultado
Olá bom dia primeiro verifique se o retorno json está corrento usando o validador online http://jsonlint.com/
Depois Verique no console se contem algum erro de codificacao no reponse .
Não cara.
Não cara.
Ta errado cara.
haha
O Google Chrome é do 'mal' qnd se esta lidando com Ajax.
Se liga no fluxo:
/applications/core/interface/imageproxy/imageproxy.php?img=https://raw.githubusercontent.com/gabrieldarezzo/gabrieldarezzo.github.io/master/imasters/img/ajax_fluxo.png&key=febc6e8e80f3ce22d3d302b6219f8da9c4fa921550e7b98eeaa7bd1f4da078bc" alt="ajax_fluxo.png" />
Ai o exemplo desse fluxo:
<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body style="width: 100%;">
<div id="js-dados" style="width: 10%; float: left;">
<p>Nome</p>
<input type="text" name="nome" />
<p>E-mail</p>
<input type="text" name="email" />
<br />
<button id="btn-enviar">Enviar</button>
</div>
<div id="ajax-retorno"></div>
<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$( "#btn-enviar" ).bind( "click", function() {
$.ajax({
url: 'recebe.php'
,data: $('#js-dados *').serialize()
,type:'POST'
,dataType: 'json'
,success: function(json){
$( "#ajax-retorno" ).html(json.texto);
}
,error: function(json){
console.log(json);
}
});
});
});
</script>
</body>
</html>
php: recebe.php
<?php
// var_dump($_POST);
$ret = '';
$ret .= 'nome: ' . $_POST['nome'] . '<br />';
$ret .= 'email: ' . $_POST['email'];
print json_encode(
array(
'status' => true
,'texto' => $ret
)
);
Só explicando. no Jquery você fica monitorando o evento 'click' do id="btn-enviar"
Caso ocorra ele dispara o ajax compactando/serializando todos os elementos() -- data: $('#js-dados ').serialize()
E o retorno do ajax no caso o json.texto joga dentro da div#ajax-retorno
*Obs: JSON é UTF-8 precisa se atentar sempre a isso.
Edit:
O objetivo da minha postagem foi mais exemplificar como se 'debugga' uma requisição ajax.
No seu exemplo reparei que esta tudo via GET.
então você precisa se atentar nisto (na chamada via JavaScript, e no recebimento do php)
JSON -> JavaScript Object Notation.
Isso indica que JSON é nativo do JavaScript, logo você acessa como um objeto javascript normal.