0

I get this JSON array from a REST API via AJAX:

{
  "results": [
    {
    "language_code": "es",
    },
    {
    "language_code": "gl",
    },
    {
    "language_code": "pt",
    }
  ]
}

Within the AJAX success function I would like to alert each language_code. For some reason it's only working for the first item "es".

Here's the code:

 success: function(json) {

 $(json.results).each(function(item) {
    alert($(this)[item].language_code);
 });

 }

The each loop works and alerts "0", "1" and "2" if I do something like this: alert(item); - however, in the upper form it only reads the first item and then returns an error.

Any help would be appreciated. Thanks!

7
  • 1
    alert($(this).language_code); ? Commented Dec 23, 2015 at 18:44
  • 1
    Nooo, it's item.language_code, as $(this) shouldn't be used here Commented Dec 23, 2015 at 18:45
  • 1
    alert(item.language_code); Commented Dec 23, 2015 at 18:46
  • 1
    And note, $(el).each(function(index, item) {... Commented Dec 23, 2015 at 18:46
  • 1
    jsfiddle.net/adeneo/38kkhLL2 Commented Dec 23, 2015 at 18:47

2 Answers 2

2

Try this instead:

$.each(json.results, function(key, val) {
    alert( val.language_code );
});
Sign up to request clarification or add additional context in comments.

Comments

0

Try this. You would need to add another iteration block to get the all sub values. This would work for multiple nesting.

$.each(json,function(i) {
   $.each(json[i],function(x) // yields each child in 'results'
   {
      alert(json[i][x]["language_code"]);
   });
 });

Example : https://jsfiddle.net/DinoMyte/rv3wwpsf/4/

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.