2013-09-27 4 views
0

Полный код:Как получить параметры от json?

$.post('test.php', { 
id: id 
},function (data) { 
console.log(data); 
var Server = data.response.server; 
var Photo = data.response.photo; 

console.log(Server); 
console.log(Photo); 

}); 

в data я получаю JSON:

{ 
"server":9458, 
"photo": 
"[{\"photo\":\"0d6a293fad:x\",\"sizes\": 
    [[\"s\",\"9458927\",\"1cb7\",\"PX_xDNKIyYY\",75,64], 
    [\"m\",\"9458927\",\"1cb8\",\"GvDZr0Mg5zs\",130,111], 
    [\"x\",\"9458927\",\"1cb9\",\"sRb1abTcecY\",420,360], 
    [\"o\",\"9458927\",\"1cba\",\"J0WLr9heJ64\",130,111], 
    [\"p\",\"9458927\",\"1cbb\",\"yb3kCdI-Mlw\",200,171], 
    [\"q\",\"9458927\",\"1cbc\",\"XiS0fMy-QqI\",320,274], 
    [\"r\",\"9458927\",\"1cbd\",\"pU4VFIPRU0k\",420,360]], 
    \"kid\":\"7bf1820e725a4a9baea4db56472d76b4\"}]", 
"hash":"f030356e0d096078dfe11b706289b80a" 
} 

Я хотел бы получить parametrs server и photo[photo]

для этого я использую:

var Server = data.server; 
var Photo = data.photo; 

console.log(Server); 
console.log(Photo); 

но в concole я получаю undefined

Чем я использую код:

var Server = data.response.server; 
var Photo = data.response.photo; 

console.log(Server); 
console.log(Photo); 

Но теперь в консоли я вижу:

Uncaught TypeError: Cannot read property 'server' of undefined

Почему я получаю ошибки и как получить параметры?

P.S .: Весь код PHP и JQuery найти here

+0

Как вы получаете json? Каков контекст для вашего кода? – Brandon

+0

можете ли вы сконфигурировать данные 'console.log (data)' и посмотреть, что там? –

+2

Если этот JSON уже разобран, 'data.server' и' data.photo' должны работать нормально.Пожалуйста, включите ** полный ** пример, который демонстрирует проблему. Я подозреваю, что есть некоторые аякс - посмотрим [SSCCE] (http://sscce.org), пожалуйста. –

ответ

0

Просто установите соответствующий тип json данных, один по умолчанию string.

И ваши данные непосредственно под data переменной!

$.post('test.php', { 
    id: id 
},function (data) { 
    console.log(data); 
    var Server = data.server; 
    var Photo = data.photo; 

    console.log(Server); 
    console.log(Photo); 

}, 'json'); 

Другим решением является установка правильного заголовка в вас РНР ответ:

Content-Type text/javascript; charset=UTF-8 

затем JQuery Intelligent Guess, установит сам соответствующий тип данных.

+0

Большое спасибо - я не знаю этого =) Но скажите, пожалуйста, в 'console.log (data.photo);' i get '[{" photo ":" 06d7fb3797: x "," sizes ": [[" s " "9458927", "1cef", "Y-uMZImBZNM", 75,64], [ "м", "9458927", "1cf0", "ANBE-6ndoaI", 130111], [ "х"," 9458927 " "1cf1", "Vng-mT8Jqyw", 420360], [ "о", "9458927", "1cf2", "N7mZ8WRVUSE", 130111], [ "р", "9458927", "1cf3"," 8IkfS7lIrQ4 », 200171], [ "д", "9458927", "1cf4", "9510OAyFNVw", 320274], [ "г", "9458927", "1cf5", "XLmaOe2sV_0", 420360]], "ребенок": "7bf1820e725a4a9baea4db56472d76b4"}] ' ** Как получить фото в 'data.photo' ?? Я делаю data.photo.photo, но я получаю 'undefined' в консоли ... Как это получить? ** –

+0

' data.photo' - массив, чтобы получить первую фотографию в этом массиве do 'data.photo [0] .photo '. Не забывайте отмечать этот ответ как правильный.) –

+0

Я использую 'var Photo = data.photo [0] .photo;' но в консоли снова вижу 'undefined'. Зачем? –

0

Вы можете использовать parseJSON метод, предоставляемый JQuery. Это позволяет сопоставить свойства типа, своего рода, такие как:

var results = jQuery.parseJSON(jsonData); 
for (int i = 0; i < results.length; i++) { 
    alert(results[i].name + ":" + results[i].date); 
} 

Вы, возможно, потребуется настроить входы и точное использование выходов в соответствии с вашими данными и требованиями.

+0

'Uncaught SyntaxError: Неожиданный токен;' on line' for (int i = 0; i

+0

@TeopLome, это не проблема этого ответа. Что предшествует месту, где вы помещаете этот код? –

+0

см. Http://plnkr.co/edit/E0ITk042M3piMlrZvsUa?p=info –

-1

getJSON() будет анализировать JSON для вас после извлечения, поэтому с этого момента вы работаете с простым массивом Javascript ([] отмечает массив в JSON).

Вы можете получить все значения в массиве, используя для цикла:

$.getJSON("url_with_json_here", function(data){ 
     for (var i=0, len=data.length; i < len; i++) { 
      console.log(data[i]); 
     } 
    }); 

Другой пример:

Разобрать строку JSON.

var obj = jQuery.parseJSON('{ "name": "John" }'); 
alert(obj.name === "John") 
; 
+1

getJson' использует метод GET, спрашивающие хотят POST –

Смежные вопросы