1

I created an array in php (as part of an ajax response) . I would now like to convert this array into a javascript array of objects. How can I do this please?

My php array (please not this is wordpress php):

$fortot2 = 5;
$fortot3 = 2;

if (is_numeric($numwelds) && is_numeric($numconwelds))
{
    $total['tot1'] = $numwelds + $numconwelds + $mpcountrys ;
    $total['tot2'] = $numwelds + $numconwelds + $fortot2 ;
    $total['tot3'] = ($numwelds + $numconwelds) + $fortot2 / $fortot3; 
    $response = json_encode($total);
    header("Content-Type: application/json");  
    echo $response;

Now, how can I convert this into a javascript array of objects, once the json has been encoded?

2
  • Are you getting this with ajax as there's a header and everything ? Commented Mar 28, 2014 at 23:25
  • yes, this is the response for my ajax. The variables are added up to create the totals in the ajax. Now I want to take those 3 totals in the array I put them in, & convert them to a js array of objects. Commented Mar 28, 2014 at 23:32

1 Answer 1

1
// responseData is fetched via Ajax-Get
var obj = jQuery.parseJSON(responseData);
alert(obj.property);

// full ajax example
jQuery.ajax({
    url: "/index.php?action=whereMyDataIs", // here php gives the json response
    type: "GET",
    dataType: "json",
    async: false,
    success: function (data) {
        console.log(data);
        alert(JSON.stringify(data));
    }
});

You already have the PHP part (array is build, json_encoded and send as response), the next step is that you fetch this json_response on client-side, by doing a ajax get request to the PHP script providing the response. By specifying dataType:"json" you tell jQuery to automatically parse the incoming data as Object Notation. If you want to output it again, e.g. with alert, you need to stringify it again.

To answer the question regarding amcharts:

// add the loadJson function to AmCharts
// but you could also use jQuery as demonstrated above
AmCharts.loadJSON = function(url) {
  // create the request
  if (window.XMLHttpRequest) {
    // IE7+, Firefox, Chrome, Opera, Safari
    var request = new XMLHttpRequest();
  } else {
    // code for IE6, IE5
    var request = new ActiveXObject('Microsoft.XMLHTTP');
  }

  // load it
  // the last "false" parameter ensures that our code will wait before the
  // data is loaded
  request.open('GET', url, false);
  request.send();

  // parse adn return the output
  return eval(request.responseText);
};

// init chart library
var chart;

// lets build that chart
AmCharts.ready(function() {

   // load the data from your php script (the json response)
   var chartData = AmCharts.loadJSON('script.php');

   // verify in browser console, if the data is loaded and parsed correctly
   console.log(chartData);

   // build the chart
   // ...

   // output the chart
   chart.write("chartdiv");
   });
Sign up to request clarification or add additional context in comments.

8 Comments

understand you! You need to use JSON - Yeah, you make it already with $response = json_encode($total); and header("Content-Type: application/json");. You write, that you need it for an ajax request. I think you understand the JSON result. You can convert it in javascript with JSON.parse(). But what its your directly problem? The jQuery example is an example. Learn the basics to realize your project.
Please be nice to each other. We all started as beginners.
@Jens-AndréKoch Thanks. Sorry for the basic questions. So can I use jQuery.parseJSON to convert it into a JavaScript array of objects like this amcharts.com/tutorials/your-first-chart-with-amcharts ? Thanks
Yes, it's possible to feed Amcharts directly with the JSON response from your PHP script. I have updated my answer accordingly.
I've updated my answer with the amchart fetching json data from php. The missing part is "build the chart" - the chart type depends on your data and what you want to display. That's your thing. And you might find examples at amchart website. | You could do it in the same file. You would remove sending the header(). And insert <?php echo $response'; ?> at the position you need the data (right in the middle of the javascript). var chartData = <?php echo $response'; ?>
|

Your Answer

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