`
hanchilin
  • 浏览: 7890 次
社区版块
存档分类
最新评论

jquery获取action返回的json数据提示undefined或是null的问题

    博客分类:
  • SSH
 
阅读更多

基于SSH框架搭建个小网站,登陆框用jquery实现,前台一直得不到action返回的值。不是undefined就是null。具体代码如下:

Action:

public class LoginAction extends ActionSupport {

	private String userName;
	private String password;
	private String loginResult;
	protected UserManage umanage;
	
	public String execute() throws Exception{
		if(userName.equals("") || userName == null){
			loginResult="用户名不能为空";
			return ERROR;
		}
		else if(password.equals("") || password == null){
			loginResult="密码不能为空";
                        return ERROR;
		}else{
			String result = umanage.validLogin(userName, password);
			if(result != null){
				loginResult = result;
                              return ERROR;
			}				
		}		
		return SUCCESS;
	}

 jsp:

<form class="login-form" style="width: 400px" action="login" method="post" enctype="multipart/form-data">
				<div class="input-group">	
					<span class="icon-user2 input-group-addon" style=" color: #b2bcc5;background-color: #ffffff"></span>									
					<input id="userName" name="userName" type="text" class="form-control" placeholder="用户名"/>												
				</div>
				<div style="height: 15px"></div>			
				<div class="input-group">
					<span class="icon-lock2 input-group-addon" style=" color: #b2bcc5;background-color: #ffffff"></span>						
					<input id="password" name="password" type="password" class="form-control" placeholder="密码" >	
				</div>
				<div class="input-group" style="display:none" id="warning">
					<span id="warning1"></span>
				</div>
				<div class="input-group">
						<label class="checkbox" for="checkbox1">
						<input type="checkbox" id="checkbox1" data-toggle="checkbox">
						记住密码	
						<a href="#" style="position: relative;left:170;">忘记密码?</a>	
					</label>
					
				</div>
					<button id="login" onclick="testLogin()" type="button" class="btn btn-primary" style="width: 353px">登录</button>						
			</form>

<script type="text/javascript"> 
    
    $("#login").click(function(){
    	var params = {
    			userName : $("#userName").val(),
    			password : $("#password").val()
    	};
    	$.ajax({
			type : "POST",
			url : "login",
			data : params,
			dataType : "json", //ajax返回值设置为text(json格式也可用它返回,可打印出结果,也可设置成json)
			success : function(json) {				
				$("#warning1").each(function(){
					$(this).html(json);
				});
				$("#warning").show();
			},
			error:function(json){				
				alert(json);				
				return false;
			}
		});
    });
</script>

 struts.xml

<package name="UserAction" namespace="/" extends="json-default">
        <action name="login" class="loginAction" >
			<result type="json">
				<param name="root">loginResult</param>
			</result>
       </action

 测试的不输入用户名密码,或是密码错误等情况的时候,都会提示错误信息。但是每次都没有任何信息,所以就在error时直接抛出,结果每次出现undefined或是null。

错误的原因是:我对jquery的success和error理解错了,这里的不是我们在action里定义的return的情况,二是它前台自身出现的结果。而我们对不同输入return不同的结果,对于jquery来说,如果都能捕获的话都属于success情况,而不是error。而我们在action里返回error时会给jquery造成误解。

所以有两种修改方式:

一、我们可以修改struts配置文件

<action name="login" class="loginAction" >
			<result name="error" type="json">
				<param name="root">loginResult</param>
			</result>
			<result name="success">/index.jsp</result>		
</action>

 把error当作返回的类型,不是告诉前台出现错误,因为我们在action里定义的error只是一种返回的情况,而不是出现了错误。这样jquery就能在success里得到loginResult的值,并显示出来。

二、可以修改action里return的值,把error改成其他的值,input或是"ssss"其他的string类型值,这样jquery捕获action时就不会把它当作error情况处理了,而是success或是done,这样也能正确得到json值。

分享到:
评论

相关推荐

    jQuery读取json数据

    在Web开发领域,jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作...它使得前端开发者能更专注于业务逻辑,而不是数据获取和解析的底层细节。在现代Web开发中,熟练掌握这一技能对于提升开发效率至关重要。

    jQuery中ajax请求后台返回json数据并渲染HTML的方法

    本文介绍了如何在jQuery中通过AJAX请求从后台获取JSON格式的数据,并将这些数据动态地渲染到HTML中去。具体的知识点可以分为以下几个方面: 1. jQuery的AJAX方法:在文章中,通过使用jQuery提供的$.ajax()方法来...

    使用JQuery实现从JSON对象转换为form提交数据

    在前端应用中,我们经常从服务器获取JSON格式的数据,然后在客户端进行处理。 jQuery是一个强大的JavaScript库,提供了丰富的API来简化DOM操作、事件处理、动画效果以及Ajax交互。在处理表单数据时,jQuery的`...

    jquery获取json数据的并分页案例

    本案例将深入探讨如何使用jQuery来获取JSON数据并实现分页功能,这对于网页应用的数据展示至关重要。 首先,理解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于...

    SSH1,JQuery的ajax返回json二维数组处理过程

    在示例中,返回的JSON数据是一个二维数组,形如`[{key,val},{key,val},{key,val}]`。这种格式表示一个数组,其中每个元素本身又是一个键值对的对象。在JavaScript中,可以方便地遍历和操作这些数据。 在JQuery中,...

    用jquery解析JSON数据的方法

    用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里...

    jquery $.each json 获取json 数据

    本篇文章将深入探讨如何使用jQuery的$.each函数来获取并处理JSON数据。 首先,我们需要了解JSON(JavaScript Object Notation),这是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON...

    jquery ajax Datatable与json之间数据转换

    jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换jquery ajax Datatable与json之间数据转换...

    对象转换为JSON数据格式&使用JQuery获取数据

    console.log('数据获取成功'); }).fail(function() { console.log('数据获取失败'); }); ``` 在这个例子中,`$.getJSON()`向服务器发送请求,获取名为"data.json"的资源,然后将返回的JSON数据作为回调函数的参数...

    JQuery 获取json数据$.getJSON方法的实例代码

    $.getJSON是JQuery中处理JSON数据常用的一个方法,它用于从服务器获取JSON格式数据,并且可以指定当成功接收到数据时执行的回调函数来处理这些数据。 首先,了解JQuery库是学习$.getJSON方法的前提。JQuery是一个...

    jquery.json2xml.js和jquery.xml2json.js

    在jQuery的基础上,`jquery.json2xml.js` 和 `jquery.xml2json.js` 这两个脚本提供了方便的方法来在JSON和XML之间进行转换,从而让开发者无需深入了解这两种格式的复杂性,就能轻松地在它们之间进行数据互换。...

    struts2返回JSON数据的两种方式

    在本文中,我们将探讨两种在Struts2框架中返回JSON数据的方法。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端交互,尤其是在AJAX请求中。Struts2提供了一套方便的机制来支持JSON...

    jQuery中使用Ajax获取JSON格式数据示例代码.pdf

    在获取 JSON 数据时,`dataType` 应设置为 `"json"`,这样 jQuery 就会自动将返回的数据解析为 JavaScript 对象。 #### 5. 数据类型转换和URL编码 当通过 Ajax 传递数据时,如果数据参数(`data`)是一个对象,...

    jquery跨域获取json

    标题 "jquery跨域获取json" 涉及到的是JavaScript中的一个常见问题,即如何在浏览器环境中使用jQuery库跨越域限制获取JSON数据。这通常涉及到AJAX请求和JSONP(JSON with Padding)技术。 首先,我们需要理解Web...

    JQuery访问Webservice返回JSON+复合类型+集合

    本篇文章将详细讲解如何使用jQuery访问Web服务并处理返回的JSON数据,特别是涉及复合类型和集合的情况。这对于构建跨平台应用,如Android的PhoneGap框架与服务器交互,尤其重要。 首先,理解jQuery的核心概念。...

    jquery-autoComplete 处理返回的json对象问题

    本文将深入探讨如何处理jQuery-autoComplete插件在接收到JSON对象返回数据时可能遇到的问题。 `jQuery-autoComplete` 是jQuery UI的一个插件,它允许我们为输入框提供动态的下拉建议。这个功能通过监听用户输入并...

    struts2+jquery执行ajax并返回json类型数据(源码)

    在这个"struts2+jquery执行ajax并返回json类型数据"的示例中,我们将探讨如何通过Ajax技术在后台Struts2框架与前端jQuery库之间交换JSON格式的数据。 首先,Struts2是一个强大的MVC(Model-View-Controller)框架,...

    jQuery JSON动态获取表格数据代码

    在本文中,我们将深入探讨如何使用jQuery和JSON来动态获取并显示表格数据。这个主题主要集中在利用jQuery的灵活性和JSON的轻量级数据交换格式,为网页中的表格提供动态加载和交互功能。以下是对给定标题和描述的详细...

    struts2.1.8.1+jquery1.4.2返回json数据

    Struts2.1.8.1与jQuery1.4.2结合实现JSON数据返回的知识点主要涉及以下几个方面: 1. **Struts2框架**:Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web开发框架,它在Struts1的基础上进行了很多...

    Ajax +jquery跨域获取JSON

    这里的"Ajax + jQuery跨域获取JSON"是一个典型的Web开发技术应用场景,主要用于解决Web应用程序中不同源之间的数据共享问题。在本案例中,开发者成功地实现了跨域请求以获取JSON数据,并将这些数据用于展示天气预报...

Global site tag (gtag.js) - Google Analytics