0
json 객체를 사용하여 jsp 파일에서 데이터를 전송하려고합니다.getJSON() JavaScript 함수가 호출되지 않았습니다.
이 내 자바 스크립트 코드 :
public class BomItemToJSON extends HttpServlet {
private static final long serialVersionUID = 1L;
@PersistenceContext(unitName = "xxx")
public EntityManager em;
@Resource
UserTransaction utx;
Logger logger = Logger.getLogger(this.getClass().getCanonicalName());
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("bom item to json servlet has been called.");
try {
utx.begin();
} catch (NotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//int id = Integer.parseInt(request.getParameter("id"));
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("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
try {
utx.commit();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RollbackException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (HeuristicMixedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (HeuristicRollbackException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
이것은 서블릿을 매핑 내 web.xml 파일입니다 : 이것은 자바 스크립트에 의해 호출해야 내 서블릿
// action when item file is clicked
$("li span.file").click(function(){
// get the ID
alert(' Forward the url when clicked WITH ID => ' + $(this).attr('id'));
$.getJSON('BomItemToJSON', function(data) {
alert('entered getJSON()');
$.each(data, function(i, item) {
alert('entered each()');
var id = item.id;
var description = item.description;
alert('description: ' + description);
formObject = document.forms['itemForm'];
formObject.elements['itemId'].value = id;
formObject.elements['itemDescription'].value = description;
alert('done with javascirpt');
});
});
});
입니다 :
<servlet>
<display-name>BomItemToJSON</display-name>
<servlet-name>BomItemToJSON</servlet-name>
<servlet-class>com.xxx.servlets.BomItemToJSON</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BomItemToJSON</servlet-name>
<url-pattern>/BomItemToJSON</url-pattern>
</servlet-mapping>
항목을 클릭하면 "id를 클릭하면 URL 전달"이라는 경고 메시지가 나타납니다. 그러나 그것은 getJSON() 함수가 호출되지 않는 것처럼 보입니다. 왜? 실종 뭐죠 찾을 수
'BomItemToJSON'이라는 지정된 URL이 실제로 있습니까? 예인 경우 어떻게 되나요? JS 콘솔에서 오류가 발생합니까? – m90
현대적인 브라우저에서 디버깅 도구를 열고 "네트워크"탭 또는 유사한 것을보십시오. URL 매핑에 문제가 있음을 나타내는 404 오류 또는 유사한 메시지가 표시되거나 서블릿에 문제가 있음을 나타내는 500 오류가 표시됩니다. 어느 쪽도 보지 않는다면, 응답 데이터를보아야합니다. 그러면 응답 데이터가 무엇이 진행되고 있는지 파악하는 데 도움이됩니다. –
실제 문제와 관련이 없지만 'text/plain' 콘텐츠 유형으로 JSON을 반환하는 이유는 무엇입니까? JSON의 올바른 콘텐츠 유형은 ['application/json'] (http://tools.ietf.org/html/rfc4627)입니다. (getJSON은 내용 유형을 무시하고 그 결과를 JSON으로 해석하기 때문에 연관성이 없다고합니다.)하지만 콘텐트 유형을 명시 적으로 설정하면 제대로 설정 될 수 있습니다. –