用ajax返回验证的时候总是弹出error原因

前端之家收集整理的这篇文章主要介绍了用ajax返回验证的时候总是弹出error原因前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

发一个简单案例:

前台

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
      <title>用户登录</title>
      <script type="text/javascript" src="../js/jquery-easyui-1.3.5/jquery.min.js"></script>
      <script type="text/javascript" src="../js/jquery-easyui-1.3.5/jquery.easyui.min.js"></script>
	  <link rel="stylesheet" href="../js/jquery-easyui-1.3.5/themes/default/easyui.css" type="text/css"></link>
	  <link rel="stylesheet" href="../js/jquery-easyui-1.3.5/themes/icon.css" type="text/css"></link>
	  <script type="text/javascript" src="../js/jquery-easyui-1.3.5/locale/easyui-lang-zh_CN.js"></script>
	  <Meta http-equiv="content-type" content="text/html;charset=UTF-8" />
	  <script type = "text/javascript" charset = "UTF-8">
	  $(function(){
	  	  var loginDialog;
	  	  loginDialog = $('#loginDialog').dialog({
	  	      closable : false,// 组件添加属性:让关闭按钮消失
	  	      //modal : true,//模式化窗口
	  	      buttons : [{
	  	          text:'注册',handler:function(){
	  	              
	  	          }
	  	      },{
	  	      	  text:'登录',handler:function(){
	  	      	       $.ajax({
                         url:'../servlet/Login_Do',data :{
                               name:$('#loginForm input[name=name]').val(),password:$('#loginForm input[name=password]').val()
                              },dataType:'json',success:function(r){
                            //var dataObj=eval("("+data+")");
                             alert("进来了");
                          },error:function(){
                             alert("失败");
                          }   
                         
                      });
	  	      	       //alert(data)
	  	      	  }
	  	      }]
	  	  });
	  });
	  </script> 
  </head>
  <body style=”width:100%;height:100%;"  >
  		<div id = "loginDialog" title = "用户登录" style = "width:250px;height:250px;" >
	  		<form id = "loginForm"  method = "post">
				<table>
				<tr>
					<th>用户名 :</th>
					<td><input type = "text" class = "easyui-validateBox" data-options="required:true" name = "name"><br></td>
				</tr>
				<tr>
				    <th>密码: </th>
				    <td> <input type = "password" class = "easyui-validateBox" data-options="required:true" name = "password"><br></td></td>
				</tr>
				</table>
			</form> 
  		</div>
  </body>
</html>

后台

public class Login_Do extends HttpServlet {
	public void doGet(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException {
			this.doPost(request,response);
	}
	public void doPost(HttpServletRequest request,IOException {
		request.setCharacterEncoding("UTF-8"); 
		response.setCharacterEncoding("UTF-8");
		String name =request.getParameter("name");
		String password = request.getParameter("password");
		String js = "{\"name\":name,\"password\":password}";
		PrintWriter out = response.getWriter();
		JSONObject json = new JSONObject();
		json.put("name",name);
		out.print(json.toString());
		response.getWriter().write(json.toString());
	}
}

点击登录时:

解决办法:弹出error信息一般有两种可能:

第一种:url错误后台直接得不到值

可以用火狐的firebug查看:如果响应了信息,则不是这个问题,那么就有可能是第二种情况:

返回数据类型错误

在我这个例子中,返回的数据无意中打印了两次,这两句删去一句就好了:

out.print(json.toString());
response.getWriter().write(json.toString());
 
 

造成了错误。这时在firebug显示的信息是:

原文链接:https://www.f2er.com/ajax/165150.html

猜你在找的Ajax相关文章