繁体   English   中英

在ajax调用中将jsp响应接收为JSON

[英]Receiving jsp response as JSON in ajax call

我有一个jsp页面,将响应作为json发送。 该页面是通过AJAX调用请求的。 但是响应进入Ajax错误部分而不是成功部分。

以下是我的jsp页面(getHangouts.jsp):

<%
EntityManager em = null;
try{
    em = HibernateUtil.getEntityManager();
    String uid1 = request.getParameter("uid1");
    String uid2 = request.getParameter("uid2");

    HangoutBll hb = new HangoutBll();
    java.util.List<Hangout> list =  hb.getAllBetweenUIds(uid1, uid2, em);

    JSONArray arr = new JSONArray();
    for(Hangout h: list){
        JSONObject obj = new JSONObject();
        obj.put("createdOn", h.getCreatedOn());
        obj.put("uid", h.getUid());
        obj.put("linkingUid", h.getLinkingUid());
        obj.put("text", h.getText());

        arr.put(obj);
    }

    response.setContentType("application/json");
    PrintWriter outt = response.getWriter();
    outt.print(arr);
}
finally{
    if(em != null)
        em.close();
}
%>

</body>

以下是Ajax的调用:

var req_url = 'getHangouts.jsp?uid1='+uid+'&uid2='+linkingUid;

$.ajax({
    type:'post',
    url:req_url,
    dataType: 'json',
    success:function(data){

        $.each(data, function (index, obj) {

            var hangout = '';
            if(obj.uid == uid){
                hangout = '<div style="width: 100%; text-align: right;"><span style="background: #b3ecff; border-radius: 5px">'+obj.text+'</span><div>';
            }
            else{
                hangout = '<div style="width: 100%;"><span style="background: #f2f2f2; border-radius: 5px">'+obj.text+'</span><div>';
            }

            $('#'+'echoText').append(hangout);
        });

    },
    error: function(xHR) {
        showMessage("<div class='alert alert-danger'><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a> "+xHR.responseText+"  </div>");
    }
});

我在AJAX错误部分中获得以下JSON。

[{
    "uid": "Blake",
    "text": "Blake: Lets have a coffee..",
    "linkingUid": "Liong",
    "createdOn": "2017-06-12 01:10:11.0"
}, {
    "uid": "Liong",
    "text": "Liong: Okay just give me 5 min",
    "linkingUid": "Blake",
    "createdOn": "2017-06-12 01:11:03.0"
}]

删除getHangouts.jsp内的所有HTML标记。 返回带有响应的HTML标记可能会发生解析错误,因此调用了错误块。

您还可以在控制台上检查错误:

error: function(xHR,status, error) {
   console.log(error);
   //console.log(xHR.responseText);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM