Ajax readyState一直为1或无法请求到后台的问题处理
来源:互联网 发布:淘宝无线视频怎么添加 编辑:程序博客网 时间:2024/06/07 07:39
1、问题及背景描述
最近重温ajax,之前粗略的了解和会用,没有详细的了解过Ajax的一些技术要点。计划在SpringMVC框架下,写三种Ajax代码的方式:①get请求②post请求③Jquery。当完成get请求的方式后,采用post请求写代码时,发现xmlHttp.readyState一直为1,且无法访问到后台。
2、解决过程
通过排查js代码,发现post请求写法没有问题,详见代码:
function loadXMLDoc() {//定义xmlRequestvar xmlRequest = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");xmlRequest.open("POST", "/AjaxProject/loginParam", true);//处理传参问题xmlRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xmlRequest.onreadystatechange = function() {if (xmlRequest.readyState == 4 && xmlRequest.status == 200) {alert("post调用后台成功");}}xmlRequest.send();}
但是前台访问,xmlRequest.readyState一直为1,无法进入到callback的代码。readystate值介绍如下:
0 - (未初始化)还没有调用send()方法
1 - (载入)已调用send()方法,正在发送请求
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
3 - (交互)正在解析响应内容
4 - (完成)响应内容解析完成,可以在客户端调用了
发现1为已调用send方法,这时开始怀疑后台的请求是否有问题。贴出后台代码如下:
package com.thunisoft.controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class AjaxController {@RequestMapping(value = "/login", method = RequestMethod.GET) public ModelAndView myMethod(HttpServletRequest request,
HttpServletResponse response, ModelMap modelMap) throws Exception {System.out.println("调用login请求"); return new ModelAndView("/login/hello", modelMap); }@RequestMapping(value = "/loginParam", method = RequestMethod.GET) public ModelAndView myParamMethod(HttpServletRequest request,HttpServletResponse response,
ModelMap modelMap) throws Exception {System.out.println("调用loginParam请求"); return new ModelAndView("/login/hello", modelMap); }}
并且通过百度查找了很多帖子,readyState状态值始终为1的解决办法等,但是并未解决我的问题。
3、问题解决
后来突然想到,后台Controller中请求的方式为GET(method = RequestMethod.GET)方式,导致POST请求时,未进行处理导致问题的发生。重新修改后台代码如下:
package com.thunisoft.controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class AjaxController {@RequestMapping(value = "/login", method = RequestMethod.GET) public ModelAndView myMethod(HttpServletRequest request,
HttpServletResponse response, ModelMap modelMap) throws Exception {System.out.println("调用login请求"); return new ModelAndView("/login/hello", modelMap); }@RequestMapping(value = "/loginParam", method = RequestMethod.POST) public ModelAndView myParamMethod(HttpServletRequest request,
HttpServletResponse response, ModelMap modelMap) throws Exception {System.out.println("调用loginParam请求"); return new ModelAndView("/login/hello", modelMap); }}问题得到解决!发帖记录一下问题的修改思路和方案!
0 0
- Ajax readyState一直为1或无法请求到后台的问题处理
- 关于ajax中readyState的值一直为1的问题
- AJAX,get,post传参,readyState一直为0的原因
- ajax传数组到后台Springmvc无法接受的问题
- AJAX中XMLHttpRequest.readyState总是为1
- Firefox AJAX请求readyState = 0,status = 0问题
- 关于ajax请求后台接口无法进行页面跳转的问题
- 解决STRUTS+AJAX+JSP 请求到后台乱码问题
- 页面通过jquery上的ajax请求到后台通过POI导出Excel的问题
- Ajax前台请求 以及 后台 Java 处理 (包含undefined的问题)
- java使用axios.js的post请求后台时无法接收到参数的问题
- ajax请求状态:readyState的状态值,status状态值
- 原生ajax请求及readyState的几种状态
- 关于struts2或webwork form表单无法提交到后台控制层方法的问题分析
- 记一次JavaScript Ajax取到后台Json无法使用的问题
- ajax 请求 无法获取数据的问题
- 从前台到后台的数组或集合为null问题
- ajax(json)请求发送至后台的接收处理
- Spring boot干货系列:(一)优雅的入门篇
- Linux系统结构
- 二叉树的中序遍历
- Oracle/Scheduler和Job的基本概念
- 启动npm报错
- Ajax readyState一直为1或无法请求到后台的问题处理
- Python logging日志(1)
- q操作符Oracle's quote operator
- Spring Boot干货系列:(二)配置文件解析
- java基础-(杂乱知识点)
- Linux 搭建yum源
- Wolf从零学编程-用Django撸个Blog(六)
- sql查询排名以及springmvc实现
- 八.MUI