Ajax请求servlet成功但返回错误

问题是这样的:我在一个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>

这里是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");

但是js中并没有进入到success方法中,结果是页面仍然刷新,只显示“hello world“这个字符串,违背了原本“使用type为submit的input标签进行标签提交,但不影响ajax返回值“的初衷。
所以根本的解决方式还是前面说的那种。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值