jQuery Meetups

jQuery Meetups

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!

Views: 347

Replies to This Discussion

Cara, não use EVAL

E como seria sem EVAL?

José Raimundo de Sousa Neto said:

Cara, não use EVAL

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

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

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

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

RSS

Badge

Loading…

© 2012   Created by jqueryadmin.

Badges  |  Report an Issue  |  Terms of Service