javascript - 在ajax调用中以JSON形式接收jsp响应

标签 javascript jquery json ajax jsp

我有一个 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 标签可能会发生解析错误,因此调用错误 block 。

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

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

关于javascript - 在ajax调用中以JSON形式接收jsp响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44488108/

相关文章:

javascript - 2 个完整页面之间的 JS 或 Css 页面滑动过渡

javascript - 将 Google map 标记图标更改为自定义图标

javascript - 创建用于添加内容的循环

javascript - 使用 jQuery 在新选项卡中打开 pdf

Javascript/jQuery 将表单添加到页面,但无法访问 DOM

javascript - 定义了一个可以作为对象调用的函数

javascript - HTML 文本区域;垂直滚动到文本

javascript - jQuery Ajax POST 不适用于 MailChimp

javascript - 在 JavaScript 中将变量的值调用为对象的属性

javascript - 迭代嵌套的 JSON 数组并更改属性的值