AJAX 3級連動


まずACTIONコードを見てみます
ここはしばしショーのみ

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.baidu.struts.action;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.json.JSONArray;
import org.json.JSONObject;

import com.baidu.dao.DAO;
import com.baidu.struts.form.TestForm;

/** 
 * MyEclipse Struts
 * Creation date: 04-21-2008
 * 
 * XDoclet definition:
 * @struts.action path="/test" name="testForm" input="/form/test.jsp" scope="request" validate="true"
 */
public class TestAction extends DispatchAction {

	
	public ActionForward show(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		TestForm testForm = (TestForm) form;
		DAO dao=new DAO();
		request.setAttribute("gs",dao.findByGs());
//		request.setAttribute("bm", dao.findByBm());
//		request.setAttribute("emp", dao.findByEmp());
		return mapping.findForward("index");
	}
	
	
	public ActionForward ajax(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		TestForm testForm = (TestForm) form;
		response.setHeader("Charset","UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/xml");
		String selectValue = request.getParameter("selectValue");
		Integer id=Integer.parseInt(selectValue);
		DAO dao=new DAO();
		List list=dao.findByBm(id);
		JSONArray jsonArray = new JSONArray();
		for(int i = 0; i < list.size(); i++ ){
			HashMap map = (HashMap)list.get(i);
			JSONObject jsonObject = new JSONObject(map);
			jsonArray.add(jsonObject);
		}
		try {
			response.getWriter().print(jsonArray);
			response.getWriter().flush();
			response.getWriter().close();
		} catch (IOException e) {
		}
	
		return null;
	}
	
	
	
	
	
	public ActionForward ajax1(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		TestForm testForm = (TestForm) form;
		response.setHeader("Charset","UTF-8");
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/xml");
		String selectValue = request.getParameter("selectValue");
		Integer id=Integer.parseInt(selectValue);
		System.out.println(id);
		DAO dao=new DAO();
		List list=dao.findByEmp(id);
		JSONArray jsonArray = new JSONArray();
		for(int i = 0; i < list.size(); i++ ){
			HashMap map = (HashMap)list.get(i);
			JSONObject jsonObject = new JSONObject(map);
			jsonArray.add(jsonObject);
		}
		try {
			response.getWriter().print(jsonArray);
			response.getWriter().flush();
			response.getWriter().close();
		} catch (IOException e) {
		}
	
		return null;
	}
	


	public ActionForward show2(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		TestForm testForm = (TestForm) form;
		return null;
	}

}

OK私のドアはJSPを見ています

<%@ page language="java" pageEncoding="gbk"%>
<jsp:directive.page import="java.util.List"/>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<script type="text/javascript"
	src="<%=request.getContextPath()%>/prototype.js"></script>
<script language="javascript">

	function sendRequest(selectValue){								
		var pars = 'selectValue=' + selectValue;			
		myAjax = new Ajax.Request(
								'<%=request.getContextPath()%>/test.do?method=ajax',
								{method: 'get', requestHeaders:["If-Modified-Since","0"], parameters: pars, onComplete: showResponse }
				  );
	}		
	
	
	function showResponse(response) {
		var json = eval('('+response.responseText+')');
		//alert(json)
		var selectObj = document.getElementById("dealersId");
		selectObj.options.length = 1;    		
		for(var i=0; i<json.length; i++){    			
			selectObj[i+1] = new Option(json[i].name,json[i].id);			               
		}  
	}
	
	
	function sendRequest1(selectValue){								
		var pars = 'selectValue=' + selectValue;			
		myAjax = new Ajax.Request(
								'<%=request.getContextPath()%>/test.do?method=ajax1',
								{method: 'get', requestHeaders:["If-Modified-Since","0"], parameters: pars, onComplete: showResponse1 }
				  );
	}		
	

		function showResponse1(response) {
		var json = eval('('+response.responseText+')');
		//alert(json)
		var selectObj = document.getElementById("dealersId1");
		selectObj.options.length = 1;    		
		for(var i=0; i<json.length; i++){    			
			selectObj[i+1] = new Option(json[i].name,json[i].id);			               
		}  
	}
	

	
	
	
</script>
 <BODY> 
	<html:form action="/test.do?method=show">
		<html:select property="id" onchange="javascript:sendRequest(this.value);act='';">
			<html:option value="">   </html:option>
			<html:options collection="gs" property="id" labelProperty="name"/>
		</html:select>
		<br>
			<html:select property="pid" styleId="dealersId" onchange="javascript:sendRequest1(this.value);act='';">
				<html:option value="">    </html:option>
				</html:select>
		</br>
			<html:select property="pid1" styleId="dealersId1">
				<html:option value="">    </html:option>
			</html:select>
		</html:form>
			
		
			
			
</BODY>



JSはツール類が長すぎて投稿できません
大きなかばんが届いたら、必要な友达を降ろしてもいいです.
prototype.rar