Ola pessoal.
tenho uma funcao ajax que envia uma solicitacao para o servidor e este devera retornar algo no fomato JSON. No servidor usei o jason_encode para transformar uma array numa string json.
Ate ai tudo bem.
A questao e' COMO PASSAR ESSA STRING para um obj javascript. Alguem pode me dar uma luz?
Codigo php
$arraySize = array("tam"=>sizeof($array));
$obj = json_encode($arraySize);
echo $obj;
Codigo ajax
$.ajax({
type: "POST",
url:'ADMIN/admin.php',
dataType:'json',
data:{
ObjEvn:'TesteLogin',
LoginTxt:name
},
success:function(result){
var jsObj= eval("(" + result + ")");
$('#div_container').html(jsObj[0])
}
})//Fim de Ajax
valeu!
Tags:
Cara, não use EVAL
Permalink Reply by Igor Alves on February 8, 2012 at 2:21pm E como seria sem EVAL?
José Raimundo de Sousa Neto said:
Cara, não use EVAL
Permalink Reply by Gustavo Pires on February 8, 2012 at 4:03pm como você colocou o tipo para "json" na chamada ajax o result já é esperado como json e você pode usar diretamente o objeto com as propriedades. No seu caso você pode usar:
success: function (result) {
$('#div_container').html( result.tam );
}
Se não me engano, também pode usar a notação result["tam"].
Sugiro, se ainda não estiver, que use o Firebug para acompanhar as chamadas ajax.
Isso mesmo @Gustavo Pires, dá para dar um console.log(output) no firebug para ver a saída
Permalink Reply by Igor Alves on February 8, 2012 at 8:46pm Valeu Jose, valeu Gustavo.
EU estou percebendo que 'e um problema anterior.
Quando eu uso dataType:'json' o ajax n'ao roda. 'E como se houvesse erro no script php qu enao envia uma string e o ajax nao pode reconhecer o formato e nao executa.
Quando uso dataType:'html', tudo vai bem so nao consigo usar o json.
continuo pesquisando
Faça o seguinte no seu código javascript:
$.ajax({
type: "POST",
url:'ADMIN/admin.php',
dataType:'json',
data:{
ObjEvn:'TesteLogin',
LoginTxt:name
},
success:function(result){
console.log( result );
}
})//Fim de Ajax
E confira o resultado na aba console do firebug: http://eclipsesource.com/blogs/wp-content/uploads/2011/12/RAP-Fireb...
Igor Alves said:
Valeu Jose, valeu Gustavo.
EU estou percebendo que 'e um problema anterior.
Quando eu uso dataType:'json' o ajax n'ao roda. 'E como se houvesse erro no script php qu enao envia uma string e o ajax nao pode reconhecer o formato e nao executa.
Quando uso dataType:'html', tudo vai bem so nao consigo usar o json.
continuo pesquisando
Permalink Reply by Igor Alves on February 9, 2012 at 7:01am Ola Jose,
Eu posso testar com o console.log() no firebug SE EU USO dataType:'html'.
Se eu uso dataType:'json' quando aperto o botao send o ajax nao funciona. Enato n[ao aparace nada no console do firebug.
Vc saberia dizer o que pode causar isso? E' como se o Type:'json' fosse um erro de sintax do javascript e ai nada funciona. Uma outra possibilidade seria o tipo de resposta enviada pelo servidor. Se ela nao estiver na forma estrita do json o callback nao vai funcionar. Mas ai eu deveria ver uma mensagem de errro no console do firebug.
Existe alguma restrincao de servidor para trabalhar com json? Talvez essa seja a ultima explicacao.
valeu
Permalink Reply by Igor Alves on February 9, 2012 at 10:56am Ok pessoal.
resolvido 100%
AJAX
$.ajax({
type: "POST",
url: 'ADMIN/jsonPhp.php',
dataType: 'json',
data:{
ObjEvn:'TesteJson'
},
success: function(jsonData){
for (var propTitle in jsonData){
alert(jsonData[propTitle]);
}
}
});
PHP
$ObjEvn=$_POST["ObjEvn"];
if($ObjEvn=="TesteJson"){
$arraySize = array("firstName"=>"John","lastName"=>"Doe");
$obj = json_encode($arraySize);
echo $obj;
}
else{
$arraySize = array("firstName"=>"igor","lastName"=>"alves");
$obj = json_encode($arraySize);
echo $obj;
}
ENVIA UMA VARIAVEL ObjEvn:'TesteJson'.
Em php recebe a variavel via POST e teste em uma condicao if.
Se for ==TesteJson retorna a array John, Doe
Se nao, retorna a array Igor, Alves
Uso um alert para testar.
O firebug foi muito útil
valeu
© 2012 Created by jqueryadmin.