Получение JSON
Пытаясь получить данные из JSON:
$("#head").click(function(){
$.getJSON("json.js", function(json){
alert("JSON Data: " + json);
});
});
в файле: ["жо",["жорж санд","жорж","жо","жозе моуринью","жорик вартанов","жостово","жозе моуриньо","жожоба","жокей","ж вта газета"]] Но ничего не получается, что не так? |
alert("JSON Data: " + json);
json - это объект. Нужно указывать, какой именно элемент объекта вывести. К примеру, json.element1 |
Прсто для проверки оставил так:
$("#head").click(function(){
$.getJSON("json.js", function(json){
alert("JSON Data: ");
});
});
При клике ничего не появляется. |
Что в данном коде не так, писал по мануалу?
Нашёл вот что: когда в качестве callback стоит функция function(data) {} она не отрабатывает, а когда просто alert(""), то всё нормально. |
Возможно (а даже скорее всего), формат возвращаемых данных неправильный. У формата JSON есть определенные требования.
|
Проверял валидатором, всё отлично, данные выдаёт гуголь- он то не ошибается.
|
А если использовать не getJSON, а, скажем, просто ajax? Тогда результат имеется?
|
Вообще не работает...
Вот код:
$("#head").click(function(){
$.ajax({
url: "json.js",
dataType : "json",
success: function (data) {
alert("tfdf")//data.geo.lat);
}
});
});
Файл находится в той же папке, в нём:
{"geo":{"lat":"123","lon":"321"}}
|
Воспользуйтесь callback функцией error, может она скажет вам в чем ошибка:
error: function(jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
И вообще, а почему вы к JS файлу обращаетесь ? вы должны к скрипту который обрабатывается серверным языком (PHP к примеру). В этом и ошибка по моему. |
Ну это просто файл с текстом, думаю расширение неважно, да и сервер на запрос отдаёт именно text/javascript
error сейчас попробую. Вроде нашёл причину ошибки и устранил, кажется проблемы с синтаксисом. Теперь осталось обмануть гуголь и заставить отдать его мне результаты запроса, так как судя по фаербагу гуголь отдаёт пустой файл на запрос. Странно, любому браузеру на http://clients1.google.ru/complete/s...era&q=%E0&cp=1 отдаёт JSON, а скрипту нет... Кстати, если в JSON объекте находится массив ["а",["анекдоты","авито","аэрофлот","авто ру","афиша","авто","афоризмы","авианова","альфа банк","акинатор"]] как получить из него ["анекдоты","авито","аэрофлот","авто ру","афиша","авто","афоризмы","авианова","альфа банк","акинатор"] ? |
Вот ещё: этот код ошибок не вызывает, обращается на сервер, но получает пустой ответ, если смотреть в фаербаге:
$.ajax({
url: "http://tmin10.net.ru/search.js",//json.js",
dataType : "json",
//error: function(jqXHR, textStatus, errorThrown) {alert(textStatus);},
success: function (data) {
alert("tre");//data.geo.lat);
}
});
error показывает error |
json.a; |
формат данных неправильный:
["а",["анекдоты","авито","аэрофлот","авто ру","афиша","авто","афоризмы","авианова","альфа банк","акинатор"]] сами догадаетесь почему? |
Цитата:
http://www.jsonlint.com/ Это просто массив без ключей сразу со значениями Цитата:
|
Цитата:
еще раз повторяю - обратите внимание на на скобки:
*!*{*/!*
'foo', {
'bar' : [..]
}
*!*}*/!*
|
Но если гуголь отдаёт именно это?
|
var response = '["а",["анекдоты","авито"]]'; var arr = eval(response); alert(arr[0]); |
Цитата:
|
Эта штука издевается:
$.ajax({
url: "http://tmin10.net.ru/search.js",
dataTypeString: "text",
success: function(data){
//alert(data)
alert("OK");
}
});
И всё равно callback не запускается... Проверил с помошбю проксика: на сервер уходит запрос, с сервера приходит ответ, а ajax ошибается и ничего не выдаёт... |
ну или более извращенный вариант если все-таки нужен объект JSON:
var obj = {
*!*
foo : [{
'a' : 1,
'b' : 2
}]
*/!*
};
var json = JSON.parse(JSON.stringify(obj)) ;
alert('a : '+json.foo[0].a+'\nb : '+json.foo[0].b);
|
Подскажите пожалуйста, как всё таки получить простой текст с сервера, уже даже не знаю, где могут быть ошибки...
|
Цитата:
|
Цитата:
Цитата:
|
Ну так что же не правильно в коде получении текста?
|
Цитата:
|
Цитата:
$.ajax({
url: "http://tmin10.net.ru/search.js",
dataType : "json",
//error: function(jqXHR, textStatus, errorThrown) {alert(textStatus);},
success: function (data) {
alert("tre");//data[1];
}
});
|
Может дело в том что ты пишешь:
dataType : "json" и поэтому не выполняется функция сукчесс, так как ты не получаешь JSON, и JQuery должен выдать ошибку что то типа: "parseerror" |
убери dataType
|
Я пытаюсь загрузить именно JSON, но, даже без типа, возникает ошибка.
|
А зачем ты пытаешься загрузить JSON если тебе отдают массив ?
|
А массив это не JSON?
|
Ну вроде как у JSON такой формат:
{"var1":"val1", "var2":"val2"}
а у массива такой: ['val1', 'val2'] ?? И для того что бы получить из строки в формате JSON надо скобочки в eval ставить:
str = eval('({"var1":"val1", "var2":"val2"})');
а для массива не надо:
arr = eval('["val1", "val2"]');
Или я чего то не догоняю в этих форматах ?))) |
JSON -- это строка, в которой лежит что-то, удовлетворяющее грамматике http://json.org/
Это и массив, и объект, и строка, и число. Просто чаще всего передают объект, как наиболее расширяемую структуру. |
Да валидный JSON отдаёт google.
Лучше подскажите где в коде может быть ошибка или приведите рабочий пример, пожалуйста. Цитата из вики: Цитата:
|
Цитата:
$.get('json.html', function(data) {
$.each(data, function(index, value) {
alert(index + ': ' + value);
});
});
|
Я видимо туплю но и Ваш код у меня не работает, можно рабочий пример с HTML обвязкой?
|
| Часовой пояс GMT +3, время: 09:22. |