ajax请求后后,response有数据,但是进入error方法

33 篇文章 2 订阅
10 篇文章 0 订阅
  1. 格式问题,前端用ajax请求java后台,已经返回数据。但是进入的是error方法。报200
    一般是这种情况

ajax使用来json格式

   <script>
        $("#login").click(function(){
            alert("进入方法成功");
            var url="/ajaxText/info";
            $.ajax({
                type: "post",
                url: url,
                data: {"para":34765},
                cache: false,
                async : false,
                dataType: "json",
                success: function (data)
                {
                    console.log("异步调用返回成功,result:"+data);
                    console.log("result的map值:"+data["cardStatus"]);
    				alert(data["bankName"])
                },
                error:function (XMLHttpRequest) {
                    alert("请求失败!");
                }
            });
        });
    </script>

但是后台返回只是text格式,需要转json格式:

 JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(userMap));
 response.getWriter().print(jsonObject);

如果不想使用json格式的话,可以改成

    dataType: "text",
  1. 还有一种情况response是报405的
    <!doctype html><html lang="zh"><head><title>HTTP Status 405 – Method Not Allowed</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 405 – Method Not Allowed</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>消息</b> Request method &#39;POST&#39; not supported</p><p><b>描述</b> 请求行中接收的方法由源服务器知道,但目标资源不支持</p><hr class="line" /><h3>Apache Tomcat/9.0.14</h3></body></html>

日志控制台日志:

[org.springframework.web.servlet.PageNotFound] - Request method 'POST' not supported

原来我的ajax指定了post方法,

  type: "post",

但是我这里RequestMapping没有指定method = RequestMethod.POST
RequestMapping没有指定的话,是根据前端自适应的,但是前端指定了,requestMapping也一定要指定。我猜的。
解决:
1.ajax去掉 type: "post",
2.RequestMapping加上method = RequestMethod.POST

  1. 还遇到过后台日志打印json返回值返回值正确,但是前端显示??????????,而且只有中文会这样。
@Controller
@RequestMapping(value = "ajaxText")
public class AjaxTextController {
    private static Logger log = Logger.getLogger(PersonController.class);
    @Autowired
    private PersonService personService;
    @RequestMapping(value = "info")
    public void selectPerson(HttpServletRequest request, HttpServletResponse response) throws IOException {
        long userId=Long.parseLong(request.getParameter("para"));
        log.info("打印para的参数值"+userId);
        Map<String,String> userMap =personService.queryUserByid(userId);
        Map<String,Object> result = new HashMap<String,Object>();
        result.put("userMap", userMap);
        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(userMap));
        log.info(jsonObject);
        response.setCharacterEncoding("utf-8");
        response.getWriter().print(jsonObject);
    }
}

中文变成了问号。

加上下面这个即可

@RequestMapping(produces = "application/json; charset=utf-8") 

或者直接加上@ResponseBody就可以了,使用了注解@responseBody就是返回值是json数据

@Controller
@RequestMapping(value = "ajaxText")
@ResponseBody
public class AjaxTextController {
    private static Logger log = Logger.getLogger(PersonController.class);
    @Autowired
    private PersonService personService;
    @RequestMapping(value = "info")
    public void selectPerson(HttpServletRequest request, HttpServletResponse response) throws IOException {
        long userId=Long.parseLong(request.getParameter("para"));
        log.info("打印para的参数值"+userId);
        Map<String,String> userMap =personService.queryUserByid(userId);
        Map<String,Object> result = new HashMap<String,Object>();
        result.put("userMap", userMap);
        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(userMap));
        log.info(jsonObject);
        response.setCharacterEncoding("utf-8");
        response.getWriter().print(jsonObject);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醋酸菌HaC

请我喝杯奶茶吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值