0

I'm trying to create an array of categories based on JSON data returned through Wordpress. The current output is:

"property_categories_0_property_category":[  
    "All"
],
"property_categories_1_property_category":[  
    "Hospitality"
],
"property_categories_2_property_category":[  
    "Retail"
],
"property_categories_3_property_category":[  
    "Outdoor Advertising"
],
"property_categories":[  
    "4"
]

My JSON call is:

$.ajax({
    url: '?json=1',
    type: "POST",
    success: function(data){
      var fields = data.page.custom_fields;

      for (var i = 0; i < fields.property_categories[0]; i++) {
        categories = fields.property_categories_ + i + _property_category[0];
      }

    }
 });

I'm getting errors because of the attempt to concatenate the key value within the for loop.

Is there any way to achieve this?

Full JSON output:

{
status: "ok",
page: {
id: 90,
type: "page",
slug: "properties",
url: "http://delcodev:8888/properties/",
status: "publish",
title: "Properties",
title_plain: "Properties",
content: "<div class="map"><div class="marker" data-property-selector="hospitality" data-lat="39.9312311" data-lng="-74.95873819999997"><a style="display:block;" href="http://delcodev:8888/properties/aloft-mount-laurel/">aloft Mount Laurel</a><p>Morbi risus augue, maximus eget pulvinar sed, laoreet ac nulla. Donec et nunc ac ex rhoncus suscipit vel eu orci. Proin nunc nulla, iaculis eget condimentum quis, tincidunt et nisi. In ultrices, massa nec mattis semper, massa odio vulputate ipsum, vitae sollicitudin urna nisl a ante. In hac habitasse platea dictumst. Cras finibus volutpat tortor, &hellip; <a href="http://delcodev:8888/properties/aloft-mount-laurel/" class="more-link">Continue reading <span class="screen-reader-text">aloft Mount Laurel</span></a></p></div><div class="marker" data-property-selector="outdoor advertising" data-lat="39.9195342" data-lng="-75.14346219999999"><a style="display:block;" href="http://delcodev:8888/properties/lowes/">Lowes South Philadelphia</a><p>Donec bibendum lacus urna, sit amet vehicula nibh imperdiet non. Sed consequat diam et odio molestie, sed faucibus orci fringilla. Proin suscipit sit amet felis mattis venenatis. Pellentesque sit amet feugiat metus. Duis id sapien egestas, eleifend est sagittis, egestas tortor. Pellentesque quis mi vitae augue sodales commodo. In nec efficitur ante. Pellentesque et pharetra &hellip; <a href="http://delcodev:8888/properties/lowes/" class="more-link">Continue reading <span class="screen-reader-text">Lowes South Philadelphia</span></a></p></div><div class="marker" data-property-selector="retail" data-lat="39.9699176" data-lng="-74.91403300000002"><a style="display:block;" href="http://delcodev:8888/properties/starbucks-mount-laurel/">Starbucks Mount Laurel</a><p>Sed dignissim justo vitae sem gravida, ac sodales justo suscipit. Sed pulvinar iaculis magna, eu viverra nunc eleifend in. Phasellus bibendum dui at metus rhoncus, ac molestie enim tincidunt. Vivamus placerat ut sem non dignissim. Proin molestie id magna at interdum. Donec venenatis metus sit amet hendrerit consectetur. Maecenas commodo urna venenatis varius aliquet. Nunc &hellip; <a href="http://delcodev:8888/properties/starbucks-mount-laurel/" class="more-link">Continue reading <span class="screen-reader-text">Starbucks Mount Laurel</span></a></p></div><div class="marker" data-property-selector="retail" data-lat="39.948684" data-lng="-75.160755"><a style="display:block;" href="http://delcodev:8888/properties/starbucks-center-city/">Starbucks Center City</a><p>Integer sed nibh sit amet urna tristique pretium eget at arcu. Nulla nec enim interdum, suscipit ipsum at, rutrum orci. Phasellus est nibh, euismod nec ex a, malesuada semper metus. Duis ut blandit lectus, ac ullamcorper tortor. Phasellus vel porta augue, id maximus est. Proin aliquet euismod lacus, ut vestibulum leo dictum nec. Cum sociis &hellip; <a href="http://delcodev:8888/properties/starbucks-center-city/" class="more-link">Continue reading <span class="screen-reader-text">Starbucks Center City</span></a></p></div></div> ",
excerpt: "",
date: "2015-11-19 18:57:45",
modified: "2015-11-24 21:44:48",
categories: [ ],
tags: [ ],
author: {
id: 1,
slug: "delcodev",
name: "delcodev",
first_name: "",
last_name: "",
nickname: "delcodev",
url: "",
description: ""
},
comments: [ ],
attachments: [ ],
comment_count: 0,
comment_status: "closed",
custom_fields: {
client_logo_grid_0_client_logo: [
"39"
],
client_logo_grid_1_client_logo: [
"38"
],
client_logo_grid_2_client_logo: [
"35"
],
client_logo_grid_3_client_logo: [
"39"
],
client_logo_grid_4_client_logo: [
"36"
],
client_logo_grid_5_client_logo: [
"34"
],
client_logo_grid: [
"6"
],
mp4_video: [
"14"
],
webm_video: [
"15"
],
video_poster: [
"16"
],
property_categories_0_property_category: [
"All"
],
property_categories_1_property_category: [
"Hospitality"
],
property_categories_2_property_category: [
"Retail"
],
property_categories_3_property_category: [
"Outdoor Advertising"
],
property_categories: [
"4"
]
}
}
}
2
  • What is the structure of the data being returned from your ajax call? Commented Dec 1, 2015 at 21:22
  • @mcgraphix I'm using this JSON plug-in: https://wordpress.org/plugins/json-api/other_notes/, so it's just a basic JSON tree structure. I've updated my original post to include the full JSON response Commented Dec 1, 2015 at 21:40

1 Answer 1

1

You does not concatenate any key, what you doing here is a sum or concatenate string where fields.property_categories_ is a property and i is other and _property_category[0] another, what you must to do is use the lookup template/Bracket notation, like this:

  var fields = data.page.custom_fields;

  for (var i = 0; i < fields.property_categories[0]; i++) {
    categories = fields['property_categories_' + i + '_property_category'][0];
  }

example: obj[property_name]

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.