Preciso verificar o tipo de uma variavel que esta chegando de um código em ruby, segue o fonte:
<%= javascript_tag do %>
var locsjs = <%= locs.to_json%>;
<% end %>
como eu posso ver o tipo da variavel “locsjs”?
Preciso verificar o tipo de uma variavel que esta chegando de um código em ruby, segue o fonte:
<%= javascript_tag do %>
var locsjs = <%= locs.to_json%>;
<% end %>
como eu posso ver o tipo da variavel “locsjs”?
tente typeof ();
Isso funcionou, mas estou com um problema mais grave que esse,
Eu tenho a seguinte string (que parece um json, mas é uma string):
e eu tenho que pegar todas latitudes e longitudes, mas tudo que eu tentei, não funcionou 
Isso funcionou, mas estou com um problema mais grave que esse,Eu tenho a seguinte string (que parece um json, mas é uma string):
e eu tenho que pegar todas latitudes e longitudes, mas tudo que eu tentei, não funcionou :/
eval() neles!
fonte: http://www.json.org/js.html
[]'s
tente ler como um array.
Cara tentei usar esse eval, mas não tá rolando, não tem nenhum exemplo pra me mostrar?
Se parece com um json pode user JSON.parse.
Exemplo:
var s = '[{"account_id":2,"created_at":"2012-02-24T15:52:56-02:00","date":"2012-02-24T15:52:55-02:00","id":3,"latitude":"35.422005","longitude":"-125.084095","updated_at":"2012-02-24T15:52:56-02:00"},{"account_id":2,"created_at":"2012-02-24T15:53:14-02:00","date":"2012-02-24T15:53:14-02:00","id":4,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-24T15:53:14-02:00"},{"account_id":2,"created_at":"2012-02-27T10:15:08-03:00","date":"2012-02-27T10:15:08-03:00","id":5,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:08-03:00"},{"account_id":2,"created_at":"2012-02-27T10:15:23-03:00","date":"2012-02-27T10:15:23-03:00","id":6,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:23-03:00"},{"account_id":2,"created_at":"2012-02-27T10:27:49-03:00","date":"2012-02-27T10:27:49-03:00","id":7,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:27:49-03:00"},{"account_id":2,"created_at":"2012-02-27T10:29:27-03:00","date":"2012-02-27T10:29:27-03:00","id":8,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:29:27-03:00"},{"account_id":2,"created_at":"2012-02-27T10:32:31-03:00","date":"2012-02-27T10:32:31-03:00","id":9,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:32:31-03:00"}]';
var obj = JSON.parse(s);
var coordenadas = [];
for (var i in obj) {
coordenadas.push({latitude: obj[i].latitude, longitude: obj[i].longitude});
}
console.log(coordenadas);
A variável coordenadas te retorna uma coleção de objetos com propriedades latitude e longitude.
Falou.
Se parece com um json pode user JSON.parse.
Exemplo:
var s = '[{"account_id":2,"created_at":"2012-02-24T15:52:56-02:00","date":"2012-02-24T15:52:55-02:00","id":3,"latitude":"35.422005","longitude":"-125.084095","updated_at":"2012-02-24T15:52:56-02:00"},{"account_id":2,"created_at":"2012-02-24T15:53:14-02:00","date":"2012-02-24T15:53:14-02:00","id":4,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-24T15:53:14-02:00"},{"account_id":2,"created_at":"2012-02-27T10:15:08-03:00","date":"2012-02-27T10:15:08-03:00","id":5,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:08-03:00"},{"account_id":2,"created_at":"2012-02-27T10:15:23-03:00","date":"2012-02-27T10:15:23-03:00","id":6,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:23-03:00"},{"account_id":2,"created_at":"2012-02-27T10:27:49-03:00","date":"2012-02-27T10:27:49-03:00","id":7,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:27:49-03:00"},{"account_id":2,"created_at":"2012-02-27T10:29:27-03:00","date":"2012-02-27T10:29:27-03:00","id":8,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:29:27-03:00"},{"account_id":2,"created_at":"2012-02-27T10:32:31-03:00","date":"2012-02-27T10:32:31-03:00","id":9,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:32:31-03:00"}]';
var obj = JSON.parse(s);
var coordenadas = [];
for (var i in obj) {
coordenadas.push({latitude: obj[i].latitude, longitude: obj[i].longitude});
}
console.log(coordenadas);
A variável coordenadas te retorna uma coleção de objetos com propriedades latitude e longitude.
Falou.
complementando o exemplo do wagner, segue o exemplo que eu testei aqui e funcionou:
parsedJason = eval('[{"account_id":2,"created_at":"2012-02-24T15:52:56-02:00","date":"2012-02-24T15:52:55-02:00","id":3,"latitude":"35.422005","longitude":"-125.084095","updated_at":"2012-02-24T15:52:56-02:00"},{"account_id":2,"created_at":"2012-02-24T15:53:14-02:00","date":"2012-02-24T15:53:14-02:00","id":4,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-24T15:53:14-02:00"},{"account_id":2,"created_at":"2012-02-27T10:15:08-03:00","date":"2012-02-27T10:15:08-03:00","id":5,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:08-03:00"},{"account_id":2,"created_at":"2012-02-27T10:15:23-03:00","date":"2012-02-27T10:15:23-03:00","id":6,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:23-03:00"},{"account_id":2,"created_at":"2012-02-27T10:27:49-03:00","date":"2012-02-27T10:27:49-03:00","id":7,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:27:49-03:00"},{"account_id":2,"created_at":"2012-02-27T10:29:27-03:00","date":"2012-02-27T10:29:27-03:00","id":8,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:29:27-03:00"},{"account_id":2,"created_at":"2012-02-27T10:32:31-03:00","date":"2012-02-27T10:32:31-03:00","id":9,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:32:31-03:00"}]';
for (int x = 0; x < parsedJason.length; x++) {
alert(parsedJason[x].account_id);
}
[]'s
tentei fazer assim:
//Essa parte pega o valor do ruby e joga pro Json
<%= javascript_tag do %>
var locsjs = "<%= locs.to_json%>";
<% end %>
tenta pegar os valores no json
<script type="text/javascript">
var ts = JSON.parse(locsjs);
var coordenadas = [];
for (var i in obj) {
coordenadas.push({latitude: obj[i].latitude, longitude: obj[i].longitude});
}
document.write(coordenadas[0]);
</script>
Cara, não sei o que está acontecendo, mas ele não ta executando o parse, eu coloquei uns alerts para testar.
Se o teu browser for muito antigo e não suportar EcmaScript 5 você provavelmente não tem o parser. Nesse caso, se quiser, pode baixá-lo aqui:
É o json2.js.
Ou você pode utilizar a solução que o WRYEL apresentou.
Tenta usar o console do browser (ou no firefox o firebug) pra debugar o que tá acontecendo!
Falou.
A versão do navegador não é, estou no firefox 10.0.2,
eu use o inspect do próprio firefox, e vi que pode ser um problema com os espaços do HTML, mas não tenho certeza, eu pegeui isso:
Está com “&qu0t;” ao invés de espaço.
Bom, já sabemos que funciona, agora o problema está do seu lado 
tenta trocar
var locsjs = "[{"a ...";
por
var locsjs = '[{"a ...'; // espas simples no começo.
[]'s
Consegui fazer funcionar, tive que dar uns splits e mais uns substrings, mas funcionou! 