简体   繁体   中英

Displaying JSON Data using jQuery

I am trying to display my JSON data in my HTML UI, The JSON Object is returning but I am not able to display the object.

And here is my JSON object structure:

在此输入图像描述

Here is my JS File:

    $(document).ready(function() {
  console.log("ready!");

  // on form submission ...
  $('form').on('submit', function() {

    console.log("the form has beeen submitted");

    // grab values
    valueOne = $('input[name="perfid"]').val();
    valueTwo = $('input[name="hostname"]').val();
    valueThree = $('input[name="iteration"]').val();


    console.log(valueOne)
    console.log(valueTwo)
    console.log(valueThree)



    $.ajax({
      type: "POST",
      url: "/",
      datatype:'json',
      data : { 'first': valueOne,'second': valueTwo,'third': valueThree},
      success: function(result) {
            $('#result').html(result.sectoutput.summarystats.Avg.Exempt)
      },
      error: function(error) {
        console.log(error)
      }
    });

  });

});

I get nothing in my result div.

EDIT:

Here is my json.stringify(result) output on my UI:

在此输入图像描述

i feel you should stop the form submit:

$('form').on('submit', function(e) { // <-----add arg to get the event as e.
  e.preventDefault(); //<----add this to stop the form submission

  console.log("the form has beeen submitted");

  // grab values
  valueOne = $('input[name="perfid"]').val();
  valueTwo = $('input[name="hostname"]').val();
  valueThree = $('input[name="iteration"]').val();

  console.log(valueOne)
  console.log(valueTwo)
  console.log(valueThree)

  $.ajax({
    type: "POST",
    url: "/",
    datatype: 'json',
    data: {
      'first': valueOne,
      'second': valueTwo,
      'third': valueThree
    },
    success: function(data) { //<----this confused so change it to "data"
      var res = data.result.sectoutput.summarystats.Avg.Exempt;                 
      var p = '<p><pre>'+res+'</pre></p>';
      $('#result').append(p); // now append the Exempts here.
    },
    error: function(error) {
      console.log(error)
    }
  });
});

Because if you don't then form will submit and page gets refreshed and the data from ajax won't be reflected.


Updates:

I guess the actual problem lies here:

    success: function(data) { //<----this confused so change it to "data"
      var res = data.result.sectoutput.summarystats.Avg.Exempt;                 
      var p = '<p><pre>'+res+'</pre></p>';
      $('#result').append(p); // now append the Exempts here.
    },

The most confusing part in the code was the usage of result key. Better to have a different name in the success callback as i used data which is denoting the response data from ajax which is an object. So we just need to target it like:

var res = data.result.sectoutput.summarystats.Avg.Exempt;   

You can use jQuery.parseJSON() , this method will transform json to javascript object and after it loop this object and append html to page. Will be better to send array of items instead of object with parameters from server.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM