今天寫AJAX動態判斷登陸用戶名密碼,查資料鼓搗了一天返回JSON數據的問題,終於弄好了。
JSON建構於兩種結構:
1.“名稱/值”對的集合。不同的語言中,它被理解為對象(object),紀錄(record),結構 (struct),字典(dictionary),哈希表(hashtable),有鍵列表(keyedlist),或者關聯數組 (associativearray)。
2.值的有序列表。在大部分語言中,它被理解為數組(array)。這些都是常見的數據結構。JSON形式事實上大部分現代計算機語言都以某種形式支持它們。這使得一種數據格式在同樣基於這些結構的編程語言之間交換成為可能。(JSON弄明白了還是有好處啊。)
JSON具有以下這些形式:
1. 對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”后跟一個“:”(冒號);“‘JSON形 式名稱/值’對”之間使用“,”(逗號)分隔。例:{"name":"張三","age":20,"birthday":"1982-07-20"}
這是對象在json中的表示形式.即{"key1":"value1","key2":"value2",...}
2.數組是值(value)的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間使用“,”(逗號)分隔。例:["張三","李四","王五"]這是數組在json中的表示形式.即[value1,value2,value3,....]
我用的是名稱/值 的形式
首先是用struts2自帶的處理方法。 這需要引入幾個JAR
我的是struts2.3.7的
struts2-json-plugin-2.3.4.1.jar
commons-logging-1.1.1.jar
json-lib-2.3-jdk15.jar
以下是Action的代碼
public class LoginAction extends ActionSuppor{ //將要被Struts2序列化為JSON字符串的對象
Map<String, Object> message; public Map<String, Object> getMessage() { return message; } public void setMessage(Map<String, Object> message) { this.message = message; } //驗證登陸
public String loginTch() { message = new HashMap<String, Object>(); // message中的數據將會被Struts2轉換成JSON字符串,所以這里要先清空其中的數據(本來就沒數據啊,-,-不知道有沒有必要)
message.clear(); message.put("loginError", "密碼錯誤!"); } return SUCCESS; }
下面是struts.xml里面的配置
<struts>
<!-- 注意:這里是json-default,json-default是struts-default的子類 -->
<package name="default" namespace="/" extends="json-default">
<action name="loginAction" class="com.action.LoginAction" method="loginTch">
<result name="success" type="json">
<!-- 這里指定將被Struts2序列化的屬性,該屬性在action中必須有對應的getter方法 -->
<param name="root">message</param>
</result>
</action>
</package>
</struts>
OK jsp代碼
<!-- 用於顯示消息 -->
<head>
<script src="js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
function doSubmit() { $.ajax({ type: "GET", url: "loginAction", dataType: "json", cache: false, success: function(data) { $.each(data, function(key, val) { if (key == "loginError" && val != ''){ $("#mes").html(val); return false; } }); } }); } </script>
</head>
<body>
<div id="mes">
</div>
<button type="button" onlick="doSubmit()">提交</button>
</body>