Javascript – How to print JSON response in javascript

ajaxjavascript

I am able to make a Ajax request and getting response as well in form of JSON string, still alert box of JavaScript is not showing actual response text.
I am new to ajax concept and dont know much.

Ajax-Call:-

Action triggered on dropdown
<select name="state" onchange="getOptions(this.value)">

Javascript Function called :-
function getOptions(state){
  AJAX.onreadystatechange = handler;
  AJAX.open("GET", "getData?id="+state);
  AJAX.send();
};

Response Firebug is showing

Response Content

This is my code to fetch response and print.

function handler() {
  if(AJAX.readyState == 4 && AJAX.status == 200) {
    var json = eval('(' + AJAX.responseText +')');
    alert('Success. Result:' + json);
  }
  else if (AJAX.readyState == 4 && AJAX.status != 200) {
      alert('Something went wrong...');
  }
}

Every time its a success but i get output as
enter image description here

Best Solution

You need to treat your response as JSON not as text.

Try this:

function handler() {
    if (AJAX.readyState == 4 && AJAX.status == 200) {
        var json = JSON.parse(AJAX.responseText), len = json.length, i = 0, txt = "";
        for (; i < len; i++) {
            if (txt) {
                txt += ", ";
            }
            txt += json[i].name;
        }
        alert('Success. Result:' + txt);
    } else if (AJAX.readyState == 4 && AJAX.status != 200) {
        alert('Something went wrong...');
    }
}