Подтвердить что ты не робот

Отображение данных JSON с использованием jQuery

Я пытаюсь отобразить данные JSON в своем HTML-интерфейсе, Объект JSON возвращается, но я не могу отобразить объект.

И вот моя структура объектов JSON:

enter image description here

Вот мой файл JS:

    $(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)
      }
    });

  });

});

Я ничего не получаю в своем div div.

EDIT:

Вот мой результат json.stringify(result) в моем пользовательском интерфейсе:

введите описание изображения здесь

4b9b3361

Ответ 1

Я чувствую, что вы должны остановить форму 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)
    }
  });
});

Потому что, если вы этого не сделаете, форма будет отправлена ​​и страница обновится, а данные из ajax не будут отражены.


Обновление:

Я предполагаю, что проблема здесь:

    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.
    },

Самая запутанная часть кода заключалась в использовании ключа result. Лучше иметь другое имя в обратном вызове успеха, поскольку я использовал data, который обозначает данные ответа от ajax, который является объектом. Поэтому нам просто нужно настроить таргетинг, например:

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

Ответ 2

Вы можете использовать jQuery.parseJSON(), этот метод преобразует json в объект javascript и после этого закроет этот объект и добавит html на страницу, Будет лучше отправить массив элементов вместо объекта с параметрами с сервера.