2012-04-18 3 views
1

Это мой JavaScript код:функция getJSON JavaScript возвращает неопределенный объект

// action when item file is clicked 
$("li span.file").click(function(){ 

    // get the ID 
    console.log($(this).attr('id')); 

    $.getJSON('BomItemToJSON', function(data) { 
     $.each(data, function(i, item) { 
      var id = item.id; 
      var description = item.description; 

      formObject = document.forms['itemForm']; 
      formObject.elements['itemId'].value = id; 
      formObject.elements['itemDescription'].value = description; 
     }); 
    }); 

}); 

Это часть моего сервлета:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     utx.begin(); 

     BomHandling bh = new BomHandling(em, utx); 

     BomItem item = bh.getBomItem(63788); 
     Gson gson = new Gson(); 
     String json = gson.toJson(item); 

     System.out.println("Json: " + json); 

     response.setContentType("application/json"); 
     response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(json); 
     utx.commit(); 
    } 

Она возвращает:

Json: {"itemId":63788,"modules":[],"deprecated":false,"partNumber":"SG-XPCIE8SAS-E-Z","description":"4 GB Memory Expansion (2 x 2GB) low-profile FBDIMMs, Gen 2, 1.8 V, for Sun SPARC Enterprise, RoHS 6. (For Factory Integration Only)","quantity":0,"unitPriceDollar":"$350.00","discount":"10%","totalDollar":"$0.00","itemClass":"Server","itemType":"HW","vendor":"Sun"} 

Из журнала консоли I знаю, что этот сервлет называется:

[09:22:11.633] GET http://localhost:8084/xxx/BomItemToJSON [HTTP/1.1 200 OK 80ms] 

Это моя форма:

<div id="itemdetail"> 
    <form name="itemForm"> 
     ID: <input type="text" name="itemId" value="" size="100"></input> 
     Description: <input type="text" name="itemDescription" value="" size="100"></input> 
    </form> 
</div> 

Как я могу вставить Itemid и описание от объекта JSON в моей форме? Сейчас он всегда «неопределен».

ответ

4

Вам не нужны все. Ваш JSON - это всего лишь один объект, а не массив.

Ваш код должен быть, как это, я думаю:

// action when item file is clicked 
$("li span.file").click(function(){ 

    // get the ID 
    console.log($(this).attr('id')); 

    $.getJSON('BomItemToJSON', function(data) { 
     alert('entered getJSON()'); 
     var id = data.itemId; 
     var description = data.description; 

     alert('description: ' + description); 

     formObject = document.forms['itemForm']; 
     formObject.elements['itemId'].value = id; 
     formObject.elements['itemDescription'].value = description; 

     alert('done with javascript'); 
    }); 

}); 
1

объект JSON должен быть заключен в скобки: { Json: { ... } } если вы пытаетесь подтвердить свой JSON с jsonLint вы можете заметить ошибку

+0

я думал об этом, неясно, говорит ли OP «это мой Json:» или это часть кода. –

+0

:) Прежде чем приступать к просмотру ошибок кода в коде, который имеет дело с JSON, я обычно проверяю возвращаемую структуру – fcalderan

+0

. Посмотрев на его код сервлета, похоже, что это результат этой строки: 'System.out.println (« Json : "+ json);' поэтому, вероятно, не является частью кода. –

Смежные вопросы