2015-07-13 1 views
0

Таким образом, я получил довольно далеко в своем стремлении заполнить значения и использовать JavaScript, но я немного застрял. Я уверен, что я ссылаюсь на все правильно, но моя таблица html ничего не выводит.AJAX/JSON Ссылка?

В основном я просто пытаюсь вставить значения из JSON, которые API извлекает, а затем вставлять эти значения в таблицу, используя двойной цикл for (loop loop) цикл, чтобы найти значения для каждого экземпляра), чтобы пройти через файл JSON, и в зависимости от этих значений, скажем, если значение выше 7, измените цвет.

Используя этот файл в формате JSON:

{ 
    "product" : [ { 
    "name" : "TxP", 
    "id" : "TxP", 
    "measurement" : [ { 
     "id" : "222222", 
     "alias" : "Site Login", 
     "perf_data" : [ { 
     "name" : "last_five_minute", 
     "value" : "4.908", 
     "duration" : "300", 
     "unit" : "seconds" 
     }, { 
     "name" : "last_fifteen_minute", 
     "value" : "3.99", 
     "duration" : "900", 
     "unit" : "seconds" 
     } ], 
     "avail_data" : [ { 
     "name" : "last_five_minute", 
     "value" : "100", 
     "duration" : "300", 
     "unit" : "percent" 
     }, { 
     "name" : "last_fifteen_minute", 
     "value" : "100", 
     "duration" : "900", 
     "unit" : "percent" 
     }, { 
... 

.js файл:

var jsonData = new XMLHttpRequest(); 
var url = "---"; 

function changeColor(input, value){ 
if (value < 7) { 
    $(input).removeClass(); 
    $(input).addClass('high'); 
    } 
} 

jsonData.onload = funtion() { 
    if (jsonData.status === 200){ 
    responseObject = JSON.parse(jsonData,responseText); 

    var newContent = ''; 

    for (var i = 0; i < responseObject.perf_data.length; i++) { 
     if (measurement.id === '222222') { 
      for (var x = 0; x < responseObject.value.length; x++) { 
       newContent += '<td id = "part">'+changeColor(responseObject.value[x]) 
           +'</td>'; 
      } 
      document.getElementById('content').innerHTML = newContent; 
     } 
    } 

    } 
}; 

jsonData.open("GET",url,true); 
jsonData.send(); 

Мой вопрос в конечном счете сводится к тому, если я использую двойное право-цикл, чтобы пройти через JSON файл? Я чувствую, что вот где ошибка может быть, но похоже, что я ссылаюсь на адрес файла JSON прямо на кучу примеров, которые я видел с более простой ссылкой JSON ... Или это может быть что-то еще?

Спасибо в продвижении.

+0

Вы ссылаетесь на объект, все неправильно. вы пропустили 'responseObject.product', который содержит массив. вы также никогда не определяли 'измерение'. –

+0

Посмотрите на консоль JavaScript. Здесь вы должны увидеть ссылочную ошибку, потому что у вас есть опечатка. – Quentin

+0

@Quentin: Спасибо ... Ничего себе, я не могу поверить, что пропустил это. – rezey

ответ

0

Вы пропустили много свойств в пути. Это может сработать, но я не знаю, имеет ли смысл для проблемы (неизвестной нам), которую вы должны решить.

for (var i = 0; i < responseObject.product[0].measurement.length; i++) { 
    if (responseObject.product[0].measurement[i].id === '222222') { 
     for (var x = 0; x < responseObject.product[0].measurement[i].perf_data.length; x++) { 
      newContent += '<td id = "part">'+changeColor(responseObject.product[0].measurement[i].perf_data[x].value) 
          +'</td>'; 
     } 
     document.getElementById('content').innerHTML = newContent; 
    } 
} 
+0

@downvoter, почему голос вниз? – jperelli

+0

Вот что-то на эту тему: http://meta.stackexchange.com/questions/135/encouraging-people-to-explain-downvotes –

+0

Ohhh. Я действительно не изучал массивы правильно, потому что мой профессор заставил нас использовать векторы и C++ для моего первого класса программирования ..., который, откровенно говоря, я много об этом забыл. Когда я увидел вышеперечисленный комментарий о том, как JSON был всего лишь массивом в массиве, вот когда все щелкнуло, и я что-то написал. Я вернусь к этому после того, как у меня будет файл JSON, поэтому я не получаю ошибку межсайтового сайта. – rezey