Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou tentando recuperar um valor em json para uma variável php e não estou conseguindo.
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script>
jQuery(document).ready(function(){
jQuery("button").click(function(){
jQuery.ajax({
url: "pagina.php", //URL de destino
dataType: "json", //Tipo de Retorno
success: function(json){ //Se ocorrer tudo certo
var msg = json;
//alert(msg);
}
});
});
});
</script>
<title>json</title>
</head>
<body>
<button>Clique aqui</button>
<?php
$json = file_get_contents('pagina.php');
$bla = json_decode($json, true);
var_dump($bla);
?>
</body>
</html>
pagina.php
<?php
$texto="Estou aqui";
echo json_encode($texto);
?>
O que falta?
Desde já agradeço.
Me retorna:
XHR finished loading: GET "http://localhost/testetemplate/json/pagina.php".
E quando você clica sobre esta url retorna o que?
esse trecho deve ser assim:
<?php
$json = file_get_contents('pagina.php');
$bla = json_decode($json, true);
echo $bla;
?>
Acontece que você só busca por JSON no seu ajax e sua aplicação não tem nenhum output json, então adicione um com echo.
E quando você clica sobre esta url retorna o que?
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script>
jQuery(document).ready(function(){
jQuery("button").click(function(){
jQuery.ajax({
url: "pagina.php", //URL de destino
dataType: "json", //Tipo de Retorno
success: function(json){ //Se ocorrer tudo certo
var msg = json;
//alert(msg);
}
});
});
});
</script>
<title>json</title>
</head>
<body>
<button>Clique aqui</button>
NULL
</body>
</html>
>
esse trecho deve ser assim:
<?php
$json = file_get_contents('pagina.php');
$bla = json_decode($json, true);
echo $bla;
?>
Acontece que você só busca por JSON no seu ajax e sua aplicação não tem nenhum output json, então adicione um com echo.
Eu alterei conforme você me orientou, mas não me retorna nada :S
Poste apenas o conteúdo do arquivo pagina.php
Lembrando que o arquivo não pode conter nada além do json, qualquer informação a mais não será interpretada pela jQuery.
>
Poste apenas o conteúdo do arquivo pagina.php
Lembrando que o arquivo não pode conter nada além do json, qualquer informação a mais não será interpretada pela jQuery.
Estou tentando retornar o valor dessa string para uma variável php. Pelas pesquisas que fiz, vi que é possível utilizando json.
pagina.php
<?php
$texto="Estou aqui";
echo json_encode($texto);
?>Seu script está retornando o valor corretamente, teste assim para ver a impressão do resultado:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("button").click(function(){
jQuery.ajax({
url: "pagina.php",
dataType: "json",
success: function(json){
var msg = json;
jQuery("#teste").val(msg);
}
});
});
});
</script>
<title>json</title>
</head>
<body>
<button>Clique aqui</button>
<input type="text" id="teste" name="teste" value="" />
</body>
</html>Testei aqui e funcionou sim. Mas não é bem o que eu queria. Eu precisava retornar esse conteudo numa variavel php para imprimi-la de acordo com o click de um menu.
Estou utilizando um sistema de templates do Rael Cunha, nesse caso eu coloco a masterpage num htm e crio um arquivo php para instanciar essa página html e nela exibir o conteudo principal dentro de uma variável através da função de impressão desse sistema. Até agora eu consegui fazer isso. Mas preciso dar vida a um menu, de modo que funcione sem atualizar a página e eu pensei em exibir o conteudo principal de cada link do menu de acordo com o href através do ajax .E do php eu trago o conteudo html numa string para uma variavel php e a imprimo.
É possível colocar essa idéia em prática ou existe alguma melhor?
Veja se este conteúdo ajuda.
Eu já vi antes de vir aqui e seria ótimo se eu não tivesse que usar isso:
Não interfere, isso é só um template.
Então no caso como eu faria? Teria que criar uma página diferente para cada conteudo de item de menu?
Sim, você monta a página inicial e separa o conteúdo que é o mesmo para toda página (topo, rodapé, lateral). Chame eles através de include. Depois faça as páginas internas. Feito isso é só chamar as páginas no menu.
Tenta assim:
arquivo index.php
<html>
<head>
<meta charset="UTF-8">
<title>json</title>
<script type="text/javascript" src="jquery.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
jQuery.ajax({
url: "pagina.php", //URL de destino
dataType: "json", //Tipo de Retorno
success: function(json){ //Se ocorrer tudo certo
var msg = json;
//alert(msg);
}
});
});
});
</script>
</head>
<body>
<button>Clique aqui</button>
<?php
function getContent($filepath) {
$fileContent = include $filepath;
return $json;
}
$content = getContent("pagina.php");
$json_decode = json_decode($content);
var_dump($json_decode);
?>
</body>
</html>
pagina.php
<?php
$json = array("texto" => "Estou aqui.");
array_push($json, "Eu também");
$json = json_encode($json);
?>Obrigada pessoal, as duas idéias deram certo.
Rode este script com o firebug aberto, veja no console se retorna algum erro.