2014-10-16 3 views
1

У меня есть файл JSON, и это просто объект, а не какой-либо массив.JSON и HTML без массива

{"name":"Autogen Program","start":"2014-05-04","end":"2014-10-12","status":"Completed"} 

Я пытаюсь присвоить значение из JSON в HTML, но я не могу сделать это

$(function() { 

$.getJSON('http://localhost:8080/GChartServlet/data1.json', function(statusDataSet) { 
    $.each(statusDataSet, function(i) { 
    var color; 
    switch(i.status) { 
     case "In Progress": 
      color = "yellow"; 
      break; 
     case "Pending" : 
      color = "red"; 
      break; 
     case "Completed" : 
      color = "green"; 
      break; 
    } 


    if(i.name=="Autogen Program") { 
    $("#stat1").append(i.status).css('background-color', color); 
    } 

    }); 
    }); 

HTML код: -

<tr> 
    <form action="status1.asp"> 
     <td> 
      <textarea readonly style="overflow:hidden" id="stat1" cols="12" rows="1" autofocus > 
      </textarea> 
     </td> 
    </form>  

Можете ли вы помочь мне с таким же или предложить мне, где я ошибаюсь?

С уважением,

+0

надеются, что проблема $ .each (statusDataSet, функции (индекс, я) вместо $ .each (statusDataSet, функция (I) – Aru

ответ

1

Если вы хотите придерживаться своего $.each, чем вам нужно, чтобы убедиться, что возвращаемый результат является массивом:

statusDataSet = (statusDataSet instanceof Array) ? statusDataSet : [statusDataSet]; 

И $.each(function(i)) должны быть $.each(function(i, item)), потому что ваш i является индекс не элемент (объект)

Надежда, что помогает

http://jsfiddle.net/bv1br9tL/

+0

я не имею мой JSON в качестве массива я пытался. используйте для цикла также вместо каждого, но это также не помогает. – user2854333

+0

используйте строку кода между вашим 'getJSON' и вашим' each' следующим образом: http://jsfiddle.net/p1zp9hrk/ –

+0

$ (function() { $ .getJSON ('HTTP: // локальный: 8080/GChartServlet/data1.json', функция (statusDataSet) { для (вар я = 0; я user2854333

1

Если ваш JSON не является массивом, вам не нужен цикл $.each. Просто оставьте его:

$(function() { 
    $.getJSON('http://localhost:8080/GChartServlet/data1.json', function(statusDataSet) { 
    var color; 
    switch(statusDataSet.status) { 
     case "In Progress": 
      color = "yellow"; 
      break; 
     case "Pending" : 
      color = "red"; 
      break; 
     case "Completed" : 
      color = "green"; 
      break; 
    } 

    if(statusDataSet.name=="Autogen Program") { 
     $("#stat1").append(statusDataSet.status).css('background-color', color); 
    } 
    } 
}); 
+0

Он по-прежнему не отображает значение в форма . Значение по-прежнему остается пустым в форме. – user2854333

+1

Вызывает ли ваш вызов AJAX правильное значение? Посмотрите запрос на вкладке сети вашего отладчика. – RoToRa