Ajax请求servlet成功但返回错误
2017-06-08 22:43
239 查看
http://blog.csdn.net/crabime/article/details/54696064
今天刚刚开完年会回来,喝的有点多,但是丝毫不影响我对今日碰到问题的总结。问题是这样的:我在一个html页面中通过点击一个按钮,请求发送到servlet中,从servlet的输出情况可以确定参数已经传送过来了,但是ajax返回一直错误。
解决方法:如果你的按钮写法是这样的
如果input type为submit时,你每次在提交的时候会发现所有输入框中数字全部清空了,说明页面重新刷新了,那么问题来了,ajax并不会导致页面刷新啊!真正导致页面刷新的是这个type为submit的input标签,强制要求页面刷新,因为页面刷新了,那么ajax返回的信息来到了一个完全陌生的页面,自然返回的是失败啊。
如果有些人非要通过
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
这里是servlet中请求对应的方法:
2
3
4
5
6
1
2
3
4
5
6
但是js中并没有进入到success方法中,结果是页面仍然刷新,只显示“hello world“这个字符串,违背了原本“使用type为submit的input标签进行标签提交,但不影响ajax返回值“的初衷。
所以根本的解决方式还是前面说的那种。
今天刚刚开完年会回来,喝的有点多,但是丝毫不影响我对今日碰到问题的总结。问题是这样的:我在一个html页面中通过点击一个按钮,请求发送到servlet中,从servlet的输出情况可以确定参数已经传送过来了,但是ajax返回一直错误。
解决方法:如果你的按钮写法是这样的
<input type="submit" value="提交">,那么将type改为button就好。
如果input type为submit时,你每次在提交的时候会发现所有输入框中数字全部清空了,说明页面重新刷新了,那么问题来了,ajax并不会导致页面刷新啊!真正导致页面刷新的是这个type为submit的input标签,强制要求页面刷新,因为页面刷新了,那么ajax返回的信息来到了一个完全陌生的页面,自然返回的是失败啊。
如果有些人非要通过
type="submit"那种方式来完成表单提交,我觉得好像这个就不算是ajax请求了吧,因为不管怎么样,只要是submit,页面必然会reload的啊,而ajax是不会导致页面刷新的,这里我尝试用在form中增加action,然后使用下面这段代码进行ajax提交请求:
<form id="userinfo" action="/AjaxTest/LoginServlet"> 用户名:<input type="text" name="username"><br/> 密码: <input type="password" name="password"><br/> 日期:<input type="date" name="date"><br/> 电话:<input type="text" name="telephone"><br/> <input type="submit" value="提交" id="submit"> </form> <script type="text/javascript"> $("#userinfo").submit(function(event){ var form = $(this); url = form.attr('action'); var result = $.post(url, {"username":username}); result.success(function(data){ alert(data); }); }); </script>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
这里是servlet中请求对应的方法:
String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("username :" + username + " ,password " + password); response.setContentType("text/plain"); response.setCharacterEncoding("UTF-8"); response.getWriter().write("hello world");1
2
3
4
5
6
1
2
3
4
5
6
但是js中并没有进入到success方法中,结果是页面仍然刷新,只显示“hello world“这个字符串,违背了原本“使用type为submit的input标签进行标签提交,但不影响ajax返回值“的初衷。
所以根本的解决方式还是前面说的那种。
相关文章推荐
- Ajax请求servlet成功但返回错误
- springmvc中 ajax请求错误,返回406,并一直进入error的回调方法,以及返回参数为Object
- jsp学习笔记(十一):在jsp用ajax请求微信接口时,返回错误,提示status:0,statusText:error
- jquery的ajax请求成功OK,返回了数据,但是不进success的问题解决办法
- struts2之ajax请求返回自定义错误信息
- ajax的$.post请求到springMVC,后台成功操作,前台返回404。
- jquery获取ajax成功请求的返回值,并返回给其他函数使用
- ajaxfileupload.js 请求返回json数据处理错误
- ajax提出post请求,请求正常执行,但是返回error错误
- Ajax请求成功后,获取success中的返回的问题
- JSP学习笔记(十四):关于ajax请求成功时返回的是jsonSring还是jsonObject的问题
- 使用ajax发送post请求后调用servlet成功前台没有调用success
- echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端
- Spring mvc使用注解@ResponseBody Ajax请求返回json报406错误
- ajax请求错误返回status=0
- ajax请求返回数据成功但是一直进入error方法中
- 从jsp页面发送ajax请求,servlet接受参数并返回json数据
- http 500 Internal Server Error的错误 ajax请求SpringMVC后台中返回500 Internal Server Error
- Ajax请求Servlet返回文本 json html和XML数据并解析xml及responseText和responseXML的区别