2012-06-06 5 views
3

Я потратил два дня на это, и я не могу больше этого терпеть. Я получаю хорошо сформированные данные JSON из своего звонка $.ajax. Пример ниже ...Доступ к значениям внутри одного массива объектов JSON

"results":[ 
"{"a":"data","b":"data","c":"data","d":"data"}", 
"{"a":"data","b":"data","c":"data","d":"data"}", 
"{"a":"data","b":"data","c":"data","d":"data"}", 
"{"a":"data","b":"data","c":"data","d":"data"}" 
] 

я попытался получить доступ к значениям в этом одном массиве объектов JSON и просто не могу понять это. Вот мой код ниже ...

success:function (data) { 

/* 
$.each(data.results, function(i, val) { 
console.log(i, val); 
}); 
*/ 

$('a.previewUrl').each(function (i) { 
    var res = jQuery.parseJSON(data.results[0]); 
    var previewUrl = $(this); 
if(previewUrl.attr("href") == '') { 
    previewUrl.attr("href", res[i].d); 
} 

}); 

} // end success 

console.log итерации над каждым объектом JSON в отпечатках массива вне отлично, но я думаю, что я пытался дюжина различных способов, чтобы захватить эти значения в цикле $.each(). Что мне не хватает?

+0

Это не похоже на хорошо сформированный JSON? Что со всеми лишними кавычками? –

+1

Хммм ... Не следует 'data.results [0]' быть 'data.results [i]' и 'res [i]' to 'res'? Так как вы повторяете массив строк? Кроме того, ваши строки json выглядят немного странно, ваши кавычки не экранируются. И почему у вас есть строки json внутри строки json? –

+0

OMG. Кевин Б прав. Два дня смотрели на этот код, и я даже не заметил, что они были строками JSON внутри другой строки JSON. Спасибо, Кевин Б. – Marci

ответ

2

Ваш Json недействителен. Попробуйте положить его через jsonlint и посмотреть, что произойдет.

Я думаю, что это может быть то, что вы были нацелены на:

{ 
"results": [ 
    { 
     "a": "data", 
     "b": "data", 
     "c": "data" 
    }, 
    { 
     "a": "data", 
     "b": "data", 
     "c": "data" 
    }, 
    { 
     "a": "data", 
     "b": "data", 
     "c": "data" 
    }, 
    { 
     "a": "data", 
     "b": "data", 
     "c": "data" 
    } 
]} 

и если вы используете функцию JQuery в $ .getJSON, вам не нужно анализировать данные или, если вы с помощью $ .ajax, задайте тип данных json, чтобы он проанализировал данные для вас.

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