美文网首页
ajax请求成功,但总是进入error状态,控制台报错显示"re

ajax请求成功,但总是进入error状态,控制台报错显示"re

作者: fnbj | 来源:发表于2019-10-14 15:14 被阅读0次

1 问题描述

明明是后台开发,却因为接手了一个前后端完全不分离的jsp+servlet+JDBC的项目而被迫走上了写前端代码的不归路……遇到的问题也是极多。
ajax代码:

$.ajax({
    url: globalServer + "/startlogjupyter",
    type:'get',
    dataType : "json",
    data:{
        logname:logname,
        taskname:taskname
    },
    success:function (data) { 
            var noteForURL = document.getElementById("noteforURL");  
            noteforURL.innerText = data;
            noteforURL.style.display = "block";
            //打开窗口
            window.open(data, "_blank");
    },
    error:function (err) {
        if(window.console){
            console.log(err);
        }
    }
});

java代码执行完主要逻辑返回一个字符串给前端:

//此处省略一大堆代码
……
String url = "http://www.baidu.com";
response.setCharacterEncoding("utf-8");
response.setContentType("application/json");
PrintWriter out = response.getWriter();
out.write(url);
out.flush();
out.close();

结果,F12查看network选项中该接口请求成功,state为200,response为"http://www.baidu.com"。但是此时前端却无法显示和跳转,console log打印的error信息如下图所示:

console log打印的error信息
看到是parsererror后,开始怀疑请求和后台的数据类型不一致。
最终定位到问题的原因是前后端的数据类型不一致,ajax请求中定义了dataType : "json",而后台返回的是字符串。

2 解决方案

在后台代码中将返回的字符串进行json转换,转换成json格式的字符串再返回即可。

相关文章

网友评论

      本文标题:ajax请求成功,但总是进入error状态,控制台报错显示"re

      本文链接:https://www.haomeiwen.com/subject/tosrmctx.html