Поскольку вы используете jQuery, взгляните на .getJSON()
То, как вы используете .getJSON()
:
jQuery.getJSON( url, [ data ], [ callback(data, textStatus) ] )
url
- это, конечно, url
, с которого вы получаете данные. [ data ]
- это то, что вы отправляете на сервер. [ callback(data, textStatus) ]
- это функция, которая обрабатывает data
возвращение с сервера. Вы можете вообще пропустить второй аргумент textStatus
. Возвращаемые данные понимаются как JSON. .getJSON()
является сокращением для вызова .ajax()
, который указывает данные JSON.
Так что в вашем случае это будет что-то вроде (обратите внимание, что я изменил JSON, возвращающийся с сервера на response
... это менее запутанная номенклатура в вашем случае, чем использование data
, так как у вас есть data
свойство в вашем JSON):
$.getJSON(base_url+'/ajax/get_itema/'+item_id+'/0/3/true', function(response) {
...
});
Итак, чтобы восстановить вещи из response
, мы просто обращаемся к ним, используя точечные и квадратные скобки. Чтобы получить первый набор data
:
response.data[0].title \\ <== "Yeah Lets Go!"
response.data[0].path \\ <== "http://domain.com/yeah"
Выше показано в response
, который является нашим объектом JSON. Затем он смотрит на первый data
элемент (их 3) и выбирает title
в первой строке и path
во второй.
Поскольку вы используете jQuery, вы можете использовать .each()
для итерации по вашим 3 data
. Как это:
$.each(response.data, function(index, value) {
$("body").append('<a href="' + value.path + '">' + value.title + '</a>');
$("body").append('<p class="date">Created: ' + value.created_formated +
'</p><br />');
});
.each()
разумно перебирает коллекцию предметов. Первый аргумент .each()
- это объект, который вы хотите зациклить. Это response.data
, а не просто response
. Это потому, что мы хотим посмотреть на response.data[0]
, response.data[1]
и response.data[2]
. Второй аргумент .each()
- это функция обратного вызова, или то, что мы хотим сделать с каждым из элементов, для которых мы выполняем итерацию. В функции обратного вызова первый аргумент автоматически является индексом элемента (0, 1 или 2 в вашем случае). Второй аргумент - это стоимость предмета. В вашем случае это отдельный объект: response.data[0]
, response.data[1]
и response.data[2]
соответственно. Мы можем использовать точечную запись, чтобы получить то, что нам нужно, непосредственно из этих объектов. В приведенном выше примере мы получаем доступ .path
. .title
и .created_formated
от каждого из value
с.
Это делает всю вашу функцию:
$.getJSON(base_url+'/ajax/get_itema/'+item_id+'/0/3/true', function(response) {
$.each(response.data, function(index, value) {
$("body").append('<a href="' + value.path + '">' + value.title + '</a>');
$("body").append('<p class="date">Created: ' + value.created_formated +
'</p><br />');
});
});
Конечно, вы, вероятно, захотите добавить ответ к (а) конкретному элементу / элементам.
Вот хорошая информация об использовании .getJSON()
для доступа к многомерным данным JSON из другого вопроса SO.
Вот некоторая общая информация о JSON в Javascript .
Примечание:
Вам нужны запятые между фигурными скобками!
У вас есть:
...p:\/\/domain.com\/yeah"}{"id":"4242","title"...
Вам нужно:
...p:\/\/domain.com\/yeah"}, {"id":"4242","title"...