ajax+strutsAction 小例子

          本程序?qū)jax的一些基礎(chǔ)調(diào)用進(jìn)行了封裝,使用者只要實現(xiàn)具體的事件驅(qū)動程序就可以
          了,如本例子的doTest.js, 然后把該文件引進(jìn)相對應(yīng)的jsp文件里面,如test.jsp


          test.jsp


          <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
          <script src="ajaxjs/ajaxInit.js" type="text/javascript"></script>
          <script src="ajaxjs/doTest.js" type="text/javascript"></script>
          <html>
          ? <body>
          ? <input name="testText" type="text" value="">
          ? <input type="button" value="test" onclick="doTestRequest(document.getElementById('testText').value,'jgaopass','doTestAfterRequest','responseText');">
          ? </body>
          </html>


          doTest.js


          //測試函數(shù)
          ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          /**
          * 請求
          * doAfterRequestMethodName 請求成功后的要執(zhí)行的函數(shù)名稱
          * responseTypeName ajax異步調(diào)用后返回的內(nèi)容的類型,可以使responseText或者responseXml
          */

          function doTestRequest(userName, userPwd, doAfterRequestMethodName, responseTypeName){?
          ?var param = setQueryString('userName',userName,'userPwd',userPwd);
          ?sendRequest('toStrutsAjaxTest.do',param,doAfterRequestMethodName,responseTypeName);
          }

          //請求成功后的執(zhí)行內(nèi)容
          function doTestAfterRequest(responseString){
          ?var teststring = document.getElementById("testText");
          ?teststring.value = responseString;
          }
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


          ajaxInit.js

          //全局變量
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

          var xmlHttp = false;
          ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////??

          //公共函數(shù)
          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          //創(chuàng)建XMLHttpRequest對象

          function createXMLHttpRequest() {???
          ?if (window.XMLHttpRequest) {//Mozilla 等瀏覽器??? ?
          ??xmlHttp = new XMLHttpRequest();
          ??? ?} else {?? ??
          ??? ??if (window.ActiveXObject) {// IE瀏覽器
          ??? ???try {
          ??? ????xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
          ??? ???}
          ??? ???catch (e) {
          ??? ????try {
          ??? ???? ?xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
          ??? ????}
          ??????????????? ??catch (e) {
          ??????????????? ??}
          ????????? ??}
          ????? ??}
          ?}
          ? ?if (xmlHttp.overrideMimeType) {//修改MiME類型
          ? ??xmlHttp.overrideMimeType("text/xml");
          ? ?}??
          ? ?if (!xmlHttp) {//創(chuàng)建XMLHttpRequest失敗
          ? ??window.alert("創(chuàng)建XMLHttpRequest失敗");
          ?? ??return false;
          ? ?}
          }

          //向后臺發(fā)送請求的參數(shù)設(shè)置
          function setQueryString(){
          ?var param="";
          ??for(var i=0;i<arguments.length;i++){
          ??param+=arguments[i]+'='+encodeURI(arguments[i+1]);
          ??if(i!=arguments.length-2){
          ???param+="&";
          ???i++;
          ??}else{
          ???break;
          ??}?
          ?}
          ?return param;
          }

          /**
          * 發(fā)送請求
          * doAfterRequestMethodName 請求成功后的要執(zhí)行的函數(shù)名稱
          * responseTypeName ajax異步調(diào)用后返回的內(nèi)容的類型,可以使responseText或者responseXml
          */

          function sendRequest(requestUrl,param,doAfterRequestMethodName,responseTypeName){
          ?createXMLHttpRequest();?
          ?xmlHttp.open('POST',requestUrl,true);
          ?xmlHttp.setrequestheader("content-type","application/x-www-form-urlencoded");
          ?xmlHttp.onreadystatechange= function(){regCallBack(doAfterRequestMethodName,responseTypeName);};
          ?xmlHttp.send(param);
          }

          //回調(diào)函數(shù)
          function regCallBack(doAfterRequestMethodName,responseTypeName){?
          ?if(xmlHttp.readyState == 4){
          ??if(xmlHttp.status == 200){
          ????? ???doAfterRequest(doAfterRequestMethodName,responseTypeName);
          ??}
          ?}
          }

          //請求成功后的執(zhí)行函數(shù)
          function doAfterRequest(doAfterRequestMethodName,responseTypeName){
          ?var responseString = "";
          ?if (responseTypeName!=null){
          ??if (responseTypeName == "responseText"){
          ???responseString = xmlHttp.responseText;
          ??}
          ??if (responseTypeName == "responseXml"){
          ???responseString = xmlHttp.responseXml;
          ??}
          ?}?
          ?if(doAfterRequestMethodName!=null){
          ??eval(doAfterRequestMethodName+"('"+responseString+"')");
          ?}
          }
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

          struts-config.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "
          http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd ">

          <struts-config>
          ? <data-sources />
          ? <form-beans />
          ? <global-exceptions />
          ? <global-forwards />
          ? <action-mappings >
          ??? <action path="/toStrutsAjaxTest" type="com.jgao.ajax.test.struts.action.ToStrutsAjaxTestAction">
          ?</action>
          ? </action-mappings>
          ? <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
          </struts-config>


          ToStrutsAjaxTestAction.java

          //Created by MyEclipse Struts
          // XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.1.0/xslt/JavaClass.xsl

          package com.jgao.ajax.test.struts.action;

          import java.io.IOException;
          import java.io.PrintWriter;

          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.apache.struts.action.Action;
          import org.apache.struts.action.ActionForm;
          import org.apache.struts.action.ActionForward;
          import org.apache.struts.action.ActionMapping;

          /**
          ?* MyEclipse Struts
          ?* Creation date: 09-18-2006
          ?*
          ?* XDoclet definition:
          ?* @struts.action validate="true"
          ?*/
          public class ToStrutsAjaxTestAction extends Action {

          ?// --------------------------------------------------------- Instance Variables

          ?// --------------------------------------------------------- Methods

          ?/**
          ? * Method execute
          ? * @param mapping
          ? * @param form
          ? * @param request
          ? * @param response
          ? * @return ActionForward
          ? * @throws IOException
          ? */
          ?public ActionForward execute(
          ??ActionMapping mapping,
          ??ActionForm form,
          ??HttpServletRequest request,
          ??HttpServletResponse response) throws IOException {
          ??String teststring = request.getParameter("userName");
          ??teststring = teststring + "ok";
          ?? response.getWriter().write(teststring);
          ??return null;
          ?}

          }

          posted on 2006-09-19 10:11 JGAO編程隨筆 閱讀(1009) 評論(1)  編輯  收藏

          評論

          # re: ajax+strutsAction 小例子[未登錄] 2008-08-28 17:18 bobby


          eval(doAfterRequestMethodName+"('"+responseString+"')");無效
            回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2008年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 钟祥市| 罗甸县| 双辽市| 兴义市| 庄浪县| 三穗县| 东辽县| 嘉祥县| 株洲市| 酒泉市| 新兴县| 斗六市| 临沭县| 称多县| 建湖县| 潍坊市| 武宁县| 孝昌县| 南城县| 弥勒县| 洛川县| 大宁县| 香河县| 固安县| 大姚县| 电白县| 建湖县| 垣曲县| 从江县| 济阳县| 铜川市| 汉寿县| 浦江县| 曲靖市| 霞浦县| 泰来县| 宜州市| 新沂市| 获嘉县| 阿坝| 凌源市|