亚洲欧美日韩一区,久久精品国产亚洲精品,欧美激情一级片一区二区http://www.aygfsteel.com/Crying/category/25497.html如 果 敵 人 讓 你 生 氣 , 那 說 明 你 沒 有 勝 他 的 把 握! zh-cnThu, 15 May 2008 01:39:49 GMTThu, 15 May 2008 01:39:49 GMT60jsonhttp://www.aygfsteel.com/Crying/articles/200504.htmlCryingCryingWed, 14 May 2008 14:17:00 GMThttp://www.aygfsteel.com/Crying/articles/200504.htmlhttp://www.aygfsteel.com/Crying/comments/200504.htmlhttp://www.aygfsteel.com/Crying/articles/200504.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/200504.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/200504.htmlhttp://www.matrix.org.cn/resource/article/2007-03-28/JSON_96339d41-dcc3-11db-973c-874ba584761d.html

liusf 發表于 2007-03-28 08:30:53
作者:liusf     來源:JSON
評論數:12 點擊數:1,425     投票總得分:0 投票總人次:0
關鍵字:JSON

摘要:

毫無疑問,AJAX已經成為當今Web開發中一種強有力的用戶交互技術,但是它的許多可能性應用仍然鮮為人知。在本文中,我們將來共同探討如何使用JavaScript對象標志(JSON)和JSON分析器在服務器和客戶端AJAX引擎之間創建復雜而強有力的JSON數據傳輸層。
 
    本文將解釋如何使用AJAX和JSON分析器在客戶端和服務器之間創建復雜的JSON數據傳輸層。

  一、 引言

  毫無疑問,AJAX已經成為當今Web開發中一種強有力的用戶交互技術,但是它的許多可能性應用仍然鮮為人知。在本文中,我們將來共同探討如何使用JavaScript對象標志(JSON)和JSON分析器在服務器和客戶端AJAX引擎之間創建復雜而強有力的JSON數據傳輸層。我們將詳細討論如何創建一組對象(在其它語言中經常被當作一個包),如何把這些對象串行化為JSON以發送到服務器端,以及如何把服務器端JSON反串行化為客戶端JavaScript對象。

  提示:你可以在Douglas Crockford的網站上找到本文中使用的JSON分析器。

  在繼續閱讀前,本文假定你已經掌握了JavaScript技術并且了解如何創建一個基本的AJAX引擎,并經由AJAX技術向服務器端發出請求和從服務器端接收響應。為了更好地理解本文中示例,你需要下載本文相應的源碼文件。

  二、 開始

  為了進一步抽象我們的AJAX請求并有助于我們以后在不同的應用程序間共享AJAX引擎代碼,本文使用了一個我自己創建的AJAX引擎。為了使用這個引擎,我們簡單地導入三個JavaScript文件并且向一個名為AjaxUpdater的對象發出請求。然后,由該引擎來負責處理其它任務,包括把響應代理到在該請求中指定的回調方法中。下面的示例展示了我們如何使用這個引擎發出請求以及導入相關的文件:

以下是引用片段:
<script type="text/javascript"src="javascript/model/Ajax.js"></script> 
<script type="text/javascript" src="javascript/model/HTTP.js"></script>
<script type="text/javascript" src="javascript/model/AjaxUpdater.js"></script>
<script type="text/javascript">
document.load = AjaxUpdater.Update(’GET’, URL, callback);
</script>



  首先,讓我們來討論JavaScript對象。

三、 JavaScript對象

  JavaScript以前經常被誤解,似乎它主要用于實現客戶瀏覽器端圖形效果。其實,JavaScript是一種強有力的語言,特別當它與AJAX以及一個應用程序的服務器端相結合時;但是,即使在客戶端,JavaScript也能夠實現遠比你預料得多的多的功能。面向對象的JavaScript就是一個示例,它能夠使我們創建對象,擴展內在對象,甚至能夠把我們的對象創建成包以達到更容易的管理之目的。

  在本文示例中,我們將創建三個對象:Auto,Car和Wheel。其中,每一個都是簡單的對象;在此,我們僅使用它們來展示如何創建一個基本包。

  首先,Auto對象被聲明為一個新的對象:

以下是引用片段:
  
var Auto = new Object(); 



  注意,這個Auto對象將用作Car對象的父類。因此,Car對象將成為Auto對象的一個屬性,只不過它被分離到另一個文件中以更易于管理(這個概念經常被用于其它面向對象的語言中,但是在JavaScript中卻并不經常提起它)。下面是這個Car對象相應的代碼:

以下是引用片段:
  Auto.Car = new Object(); 
  Auto.Car.color = "#fff";
  Auto.Car.setColor = function(_color)
  {
  Auto.Car.color = _color;
  }
  Auto.Car.setColor("#333");



  如你所見,該Car對象是Auto對象的一個子對象—這分明是一種類對象層次結構。這個對象有一個名為color的屬性和一個用于設置它的方法。在此,我們把color屬性設置為灰色以覆蓋掉缺省的白色。當在后面我們串行化該對象時請牢記住這個事實。

  下一個對象,Wheel,是Car的一個子對象:

以下是引用片段:
Auto.Car.Wheel = new Object(); 
Auto.Car.Wheel.color = "#000";



  在此,Wheel是一個基本對象,但是它展示了對象層次中的又一個層。這個對象有一個稱為color的缺省值為黑色(“#000”)的屬性。

  下面,讓我們來分析一下為什么這些對象如此重要以及我們是如何使用它們提供的簡單的屬性的。

四、 把JavaScript對象串行化為JSON

  借助于JSON分析器,我們可以很容易地把剛才創建的JavaScript對象串行化為JSON。首先,我們需要下載該分析器的一個副本,并且要把它添加到文檔中。下面是我在本文示例中用于導入該腳本的相應的代碼:

以下是引用片段:
<script type="text/javascript" src="javascript/utils/jsonparser.js"></script> 



  我已經把該分析器添加到我的javascript目錄,即一個稱為utils的子目錄下。

  下面是最終的包括到其中用于導入適當的JavaScript文件的代碼片斷:

以下是引用片段:
<script type="text/javascript" src="javascript/Auto.js"></script>
<script type="text/javascript" src="javascript/Car.js"></script>
<script type="text/javascript" src="javascript/Wheel.js"></script>
<script type="text/javascript" src="javascript/utils/jsonparser.js"></script>
<script type="text/javascript" src="javascript/model/Ajax.js"></script>
<script type="text/javascript" src="javascript/model/HTTP.js"></script>
<script type="text/javascript" src="javascript/model/AjaxUpdater.js"></script>



  在導入適當的文件后,我們可以通過把兩個div元素和一個onload事件簡單地添加到HTML文檔中開始串行化。這兩個div元素將分別擁有ID:body和loading。其中,這個loading標簽將由AJAX引擎使用來指示進度情況,而body標簽將用于顯示消息。

以下是引用片段:
<div id="loading"></div>
<div id="body"></div>




  onload事件相應于body元素并且設置它的innerHTML屬性為JavaScript對象(作為一個串行化的JSON字符串)。為了實現這一目的,我在Auto對象上使用了jsonparser.js文件內的toJSONString方法:

以下是引用片段:
<body onload="document.getElementById(’body’).innerHTML = ’<b>Local objects serialized as JSON</b>
Auto Object: ’+ Auto.toJSONString();">



  這段代碼使用了Auto對象及其所有的子對象,并且使用JSON分析器的toJSONString方法把它們串行化為一個JSON字符串。然后,該數據可以被用作服務器端的一種數據交換格式。

  你可能還記得,在前面我們曾調用了一個稱為setColor的方法來改變Car對象的顏色。當時,我使用它是因為我想向你展示串行化能夠在運行時刻的任何點上實現,而且還為了反映出對象中最新的數據。

  如果你仔細分析一下onload事件,你會注意到,Car和Wheel對象都包裝在方括號內,這些方括號代表了父對象(即Auto)。這意味著,該串行化的JavaScript對象能夠在運行時刻被發送到服務器端以存儲最新的數據,并且也可以在應用程序啟動時從服務器端進行接收以便從數據庫中檢索多數的當前數據。最精彩的部分在于,為了創建一種“無縫”的過程,所有與服務器之間實現的數據交換都可以使用JSON技術來實現。

  下面,讓我們來看一下相同的數據是如何從服務器端接收的,以及它們是如何被使用最新的數據(典型地,來源于一個數據庫)串行化為客戶端JavaScript對象的。

五、 把JSON反串行化為客戶端JavaScript對象

  在本文中,我簡單地把一個靜態文件創建為JSON響應,但是在實際開發中,你可以把這些數據存儲在一個數據庫中并且使用一種服務器端語言返回它。基于這一能力,我們就可以輕松地創建一種強有力的數據交換過程!在前面,我們已經分析了這一串行化過程。憑基本的AJAX體驗,你應該能夠理解數據是如何被寄送到服務器端的。現在,讓我們著手討論反串行化的問題。首先來看一個針對本文示例提供的靜態JSON文件。這個文件其實是我們在上一節中串行化的數據:

以下是引用片段:
{"Car":{"color":"#333","Wheel":{"color":"#000"}}} 



  作為一個請求JSON文件的示例,當我們點擊下列鏈接時將請求這個串行化的Auto對象:

以下是引用片段:
<a href="javascript:AjaxUpdater.Update(’GET’, ’json/data.js’, displayResponse);">Get remote JSON</a> 



  一旦接收到響應消息,我們的稱為displayResponse回調方法就會被激活,然后,我們就能夠反串行化并開始使用這些對象:

以下是引用片段:
<script type="text/javascript"> 
function displayResponse()
{
 if(Ajax.checkReadyState(’loading’) == "OK")
 {
  var Auto = Ajax.request.responseText.parseJSON();
  document.getElementById("body").innerHTML += "
<b>Remote JSON unserialized</b>";
  document.getElementById("body").innerHTML += "
Car color: "+Auto.Car.color;
  document.getElementById("body").innerHTML += "
Wheel color: "+Auto.Car.Wheel.color;
 }
}
</script>



  這是相當激動人心的一部分!一旦我們擁有了該responseText,我們就能夠簡單地使用JSON分析器中的parseJSON方法來從串行化的數據中重建我們的Auto對象。借助于這個新的Auto對象,我們就可以調用相應的子對象。這個特征允許我們在服務器和客戶端來回發送對象—而不必進行大量的分析工作,然而在以前標準的XML響應情況下我們將卻必須這樣做。這樣以來,我們就可以創建出能夠基于AJAX技術來保留自身狀態的客戶端JavaScript對象


Crying 2008-05-14 22:17 發表評論
]]>
除去在用AJAX時緩存http://www.aygfsteel.com/Crying/articles/197474.htmlCryingCryingWed, 30 Apr 2008 03:30:00 GMThttp://www.aygfsteel.com/Crying/articles/197474.htmlhttp://www.aygfsteel.com/Crying/comments/197474.htmlhttp://www.aygfsteel.com/Crying/articles/197474.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/197474.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/197474.html         在請求的URL后面  加個時間     url=txxx.jsp?time=new Date();
方法2:
       在請求的URL后面  加個隨機數   url=txxx.jsp?number=Math.random();

   js認為鏈接不一樣就會再次取新的內容。 時間戳應該是比隨機數更隨機的數,保證了每次不一樣。


Crying 2008-04-30 11:30 發表評論
]]>
AJAX實現聯動下拉列表http://www.aygfsteel.com/Crying/articles/188410.htmlCryingCryingTue, 25 Mar 2008 01:26:00 GMThttp://www.aygfsteel.com/Crying/articles/188410.htmlhttp://www.aygfsteel.com/Crying/comments/188410.htmlhttp://www.aygfsteel.com/Crying/articles/188410.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/188410.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/188410.html閱讀全文

Crying 2008-03-25 09:26 發表評論
]]>
簡單的注冊驗證(struts)http://www.aygfsteel.com/Crying/articles/166993.htmlCryingCryingTue, 11 Dec 2007 09:25:00 GMThttp://www.aygfsteel.com/Crying/articles/166993.htmlhttp://www.aygfsteel.com/Crying/comments/166993.htmlhttp://www.aygfsteel.com/Crying/articles/166993.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/166993.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/166993.html<%@ page language="java" pageEncoding="UTF-8"
 contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"
 prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html"
 prefix="html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>注冊</title>
  <script type="text/javascript" language="javascript" >
  <!--
    var XMLHttpReq = false;
 
  //創建XMLHttpRequest對象      
function createXMLHttpRequest() {
 if (window.XMLHttpRequest) { //Mozilla 瀏覽器
  XMLHttpReq = new XMLHttpRequest();
 } else {
  if (window.ActiveXObject) { // IE瀏覽器
   try {
    XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
   }
   catch (e) {
    try {
     XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e) {
     alert("XMLHttpRequest創建失敗!");
    }
   }
  }
 }
}
 //發送請求函數
function sendRequest(URL) {
 createXMLHttpRequest();
 XMLHttpReq.open("POST", URL, true);
 XMLHttpReq.onreadystatechange = processResponse;//指定響應函數
 XMLHttpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 XMLHttpReq.send(null);  // 發送請求
}
 // 處理返回信息函數
function processResponse() {
 if (XMLHttpReq.readyState == 4) { // 判斷對象狀態
   // alert("回調函數");
  if (XMLHttpReq.status == 200) { // 信息已經成功返回,開始處理信息
   var res = XMLHttpReq.responseText;
      
   chkck.innerHTML = res; 
   if(res=="工號已存在!")
   {
    document.getElementById("sbs").disabled="true";
   }
   if(res=="此工號可用!")
   {
    document.getElementById("sbs").disabled="";
   }
             
                  
  }
 }
}
    // 工號唯一性驗證函數(number)
function userNumberCheck() {
 var number = document.getElementById("USER_NUMBER").value;
 if(number.length>0)
 
 {
 //alert(number);
 chkck.style.display = "";
 //alert("發送請求");
 sendRequest("/vacation_manage/checkUserNumber.do?number=" + number);
 
 }
}
 
//用戶注冊驗證函數
function regCheck() {

 var userNumber =   document.getElementById("USER_NUMBER").value;
 var username =     document.getElementById("USERNAME").value;
 var password =    document.getElementById("PASSWORD").value;
 var rep_password = document.getElementById("REP_PASS").value;
 var email =       document.getElementById("ee").value;
 var yanzhengma =   document.getElementById("yzm").value;
 if (!userNumber || userNumber.replace(/\s/g, "") == "") {
  alert("用戶的ID不能為空!");
  document.getElementById("USER_NUMBER").focus();
  return false;
 }
 if(userNumber.length>5){
     alert("ID不得超過5個字符!");
  document.getElementById("USER_NUMBER").focus();
  return false;
 }
 
 if (!username || username.replace(/\s/g, "") == "") {
  alert("用戶名不能為空!");
  return false;
 }
 if(username.length>=8){
     alert("用戶名不得超過4個字!");
  document.getElementById("USERNAME").focus();
  return false;
 }
 if (!password || password.replace(/\s/g, "") == "") {
  alert("密碼不能為空!");
  document.getElementById("PASSWORD").focus();
  return false;
 }
 if(password.length<3){
     alert("密碼不得少于3個字符!");
  document.getElementById("PASSWORD").focus();
  document.getElementById("PASSWORD").value="";
  document.getElementById("REP_PASS").value="";
  return false;
 }
 if (!rep_password || rep_password.replace(/\s/g, "") == "") {
  alert("二次密碼不能為空!");
  document.getElementById("REP_PASS").focus();
  return false;
 }
 if (password != rep_password) {
  alert("兩次輸入的密碼不同!");
  document.getElementById("PASSWORD").value="";
  document.getElementById("REP_PASS").value="";
  document.getElementById("PASSWORD").focus();
  return false;
 }
  if(!email||email.replace(/\s/g, "") == ""){
    alert("Email不能為空!");
    document.getElementById("ee").focus();
    return false;
 }
  if (!(email.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)){
  alert("請輸入合法的Email!");
  document.getElementById("ee").focus();
  return false;
 }
 if (!yanzhengma || yanzhengma.replace(/\s/g, "") == "") {
  alert("驗證碼不能為空!");
  document.getElementById("yzm").focus();
  return false;
 }
 
}
function fush()
{
 document.getElementById("yanzm").style.display="none";
}
//-->


</script>
  <link rel="stylesheet" href="/vacation_manage/css/common.css">
 </head>

 <body>
  <html:form action="/register" method="post" >

   <table align="center"  >
    <tr>
     <td align="left" style="color: blue">
      填寫注冊信息
     </td>
    </tr>

    <tr align="center">
     <td>
      <table >
       <tr>
        <td align="right">
         工號 :
        </td>

       </tr>
       <tr>
        <td align="right">
         用戶名 :
        </td>

       </tr>
       <tr>
        <td align="right">
         密碼 :
        </td>

       </tr>
       <tr>
        <td align="right">
         重輸入密碼 :
        </td>

       </tr>
       <tr>
        <td align="right">
         Email :
        </td>

       </tr>
       <tr>
        <td align="right">
         驗證碼:
        </td>

       </tr>
      </table>

     </td>
     <td>
      <table>
       <tr>
        <td align="left">
         <html:text property="userNumber" value="" size="15" onfocus="fush()"
          styleId="USER_NUMBER" />
         <span>不超過5個字符</span>

         <span id="chkck" style="display: none ;color: blue">檢測中...請稍后</sapn>
         
        </td>

       </tr>
       <tr>
        <td align="left">
         <html:text property="username" value="" size="15" styleId="USERNAME"
          onfocus="userNumberCheck()" />
         <span>不超過5個漢字</span>
        </td>

       </tr>
       <tr>
        <td align="left">
         <html:password property="password"  size="17" value="" styleId="PASSWORD" onfocus="clear()"/>
         <span>不少于3個字符</span>
        </td>

       </tr>
       <tr>
        <td align="left">
         <html:password property="rep_password"  size="17" value=""  styleId="REP_PASS"/>
         
        </td>

       </tr>
       <tr>
        <td align="left">
         <html:text property="email" value="" size="15" styleId="ee" />
        </td>

       </tr>
       <tr>
        <td align="left">
         <html:text property="yanzhengma" value="" size="15" styleId="yzm" />
         
        
        <img src="/vacation_manage/page/yanzhengma.jsp" id="CheckCodeimg" title="看不清請點擊右邊!"/></td>
       
        
                                 <td><a href="#" onclick="document.getElementById('CheckCodeimg').src='/vacation_manage/page/yanzhengma.jsp';">看不清?</a></td>
        <div id="yanzm" style="color: red" ><html:errors property="yanzhengma"/></div>
                            
                                
       </tr>
      </table>

     </td>
    </tr>
    <tr align="center">
     <td>
      <html:submit value="創建用戶" onclick="return regCheck()" disabled="false" styleId="sbs"/>
     </td>
     <td>
      <html:reset value="取消" />
     </td>
    </tr>

   </table>
  </html:form>
 </body>
</html>

 /******************************************************

package com.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;
import com.dao.DbUserDAO;
import com.po.DbUser;

/**
 * ajax驗證用戶的ID是不是存在
 *
 * @version1.0 2007/10/31
 * @author Administrator
 *
 */
public class CheckUserNumberActionAction extends Action {

 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws IOException {

  request.setCharacterEncoding("UTF-8");
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();
  DbUserDAO dbUserDAO = new DbUserDAO();
  String number = request.getParameter("number");
  //System.out.println("the id is "+ number);
  DbUser user = dbUserDAO.validateUserNumber(number);
  if (user != null) {
   out.print("工號已存在!");//
   out.close();
   return null;
  } else {
   out.print("此工號可用!");
   out.close();
   return null;
  }

 }
}



Crying 2007-12-11 17:25 發表評論
]]>
AJAX動態搜索(我的第一個AJXA程序)http://www.aygfsteel.com/Crying/articles/143760.htmlCryingCryingSun, 09 Sep 2007 05:21:00 GMThttp://www.aygfsteel.com/Crying/articles/143760.htmlhttp://www.aygfsteel.com/Crying/comments/143760.htmlhttp://www.aygfsteel.com/Crying/articles/143760.html#Feedback0http://www.aygfsteel.com/Crying/comments/commentRss/143760.htmlhttp://www.aygfsteel.com/Crying/services/trackbacks/143760.html這是SSH的至于DAO和ApplicationContext.xml我就不貼出來了

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ 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"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
 <html:base />
 <title>顯示文章</title>
<link rel="stylesheet"  href="my.css">
 <script type="text/javascript">
 <!--
 ///////////////////////AJAX的動態搜索/////////////// 
       var xmlhttp=false;
       var dataDiv;
       var dataTableBody;
      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) {}
   }
  }
      }
     
      function SendXMLHttpRequest(url)
      { dataDiv=document.getElementById("popup");
        dataTableBody = document.getElementById("dataBody");            
        createXMLHttpRequest();
        xmlhttp.open("POST",url,true);
        xmlhttp.onreadystatechange=callbackfunction;
        xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
              xmlhttp.send(url);
       
      }
     
      function callbackfunction()
      {
        
         if(xmlhttp.readystate==4)
         {
           if(xmlhttp.status==200)
           {
            var data=xmlhttp.responseXML;
            var newItems=data.getElementsByTagName("content");//***********
             var idItems=data.getElementsByTagName("id");
            clearData(); //清空原來的
            for(var i=0;i<newItems.length;i++)
            {
              var row, item, idItem,txtNode,txtNode2 ;
                item=newItems[i];
                idItem=idItems[i];
                txtNode=item.text;//////***************
                txtNode2=idItem.text;
                row=createRow(txtNode,txtNode2);
                dataTableBody.appendChild(row);  
           }
           }
         }
      }
     
      function text_change()
      {
          var url="ajax_find_article.do?name="+window.document.getElementById("Text1").value;
                 // alert(url);
         SendXMLHttpRequest(url);

      }
     
      //生成表格內容行
    function createRow(data,data2) {           
       var row, cell,cell2, txtNode,txtNode2;
       row = document.createElement("tr");
       cell = document.createElement("td");
       cell2 = document.createElement("td");
       var a=document.createElement("a")
       cell.setAttribute("bgcolor", "#FFFAFA");
       cell.setAttribute("border", "1");
       cell2.setAttribute("bgcolor", "#FFFAFA");
       cell2.setAttribute("border", "1");   
       a.setAttribute("href", "http://localhost:8080/ssh_article/oneArticleList.do?id="+data2);
                           
       txtNode = document.createTextNode(data);
       txtNode2 = document.createTextNode("查看詳情");
       cell.appendChild(txtNode);
       a.appendChild(txtNode2);
       row.appendChild(cell);
       cell2.appendChild(a); 
       row.appendChild(cell2);
       return row; 
    }
     
      // 清除提示框******
    function clearData() {           
       var ind = dataTableBody.childNodes.length;           
       for (var i = ind - 1; i >= 0 ; i--) {
           dataTableBody.removeChild(dataTableBody.childNodes[i]);      
       }
       dataDiv.style.border = "none";
    }        

 //-->
 </script>
</head>
<body>
 關鍵字搜索:<input type="text" id="Text1" size="10"  onkeyup="return text_change()" />
  <hr style="color:blue">
  <div style="position:absolute; left: 0px; width: 200px; top: 50px; height: 233px; " id="popup">
   <table border="0" cellspacing="2" cellpadding="2"  bgcolor="#E0F0F8">
    <tbody id="dataBody">
    </tbody>
   </table>
  </div>
  <br />
</body>
</html:html>
*********************************************
SERVLET

package com.wsq.struts.action;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;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;
import com.wsq.dao.ArticleDAO;
import com.wsq.vo.Article;

public class Ajax_find_articleAction extends Action {
     private ArticleDAO articleDAO;
     public ArticleDAO getArticleDAO() {
   return articleDAO;
  }
  public void setArticleDAO(ArticleDAO articleDAO) {
   this.articleDAO = articleDAO;
  }
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)  throws IOException{
  request.setCharacterEncoding("UTF-8");
  String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"GB2312");////編碼轉換GB2312
  System.out.println(name+"  關鍵字!");

  if (name.length()<1 ) {
   name ="0";  ////搜索為空(也就是沒數據返回)
  }
  System.out.println("+++++++++++++++++++++++++++++");
  List list = articleDAO.findByMyName(name);
  System.out.println("-------------------------------");
  response.setContentType("text/xml; charset=UTF-8");
  response.setHeader("Cache-Control", "no-cache");
  PrintWriter out = response.getWriter();
  out.println("<response>");
  Iterator i = list.iterator();
  while (i.hasNext()) {
   Article a= (Article) i.next();
   out.println("<content>" + a.getTitle() + "</content>");
   out.println("<id>" + a.getId() + "</id>");

   
  }
  out.println("</response>");
  out.close();
  return null;

 }
 
}



Crying 2007-09-09 13:21 發表評論
]]>
主站蜘蛛池模板: 清丰县| 宜兰市| 米泉市| 新丰县| 阳泉市| 鄂托克前旗| 镇平县| 三台县| 射洪县| 江都市| 河津市| 沿河| 郑州市| 镇江市| 洛南县| 沂源县| 兰西县| 毕节市| 绍兴市| 麟游县| 宣城市| 翁源县| 岫岩| 静安区| 汕头市| 武安市| 宁津县| 如皋市| 永宁县| 洛阳市| 弥渡县| 闵行区| 益阳市| 广平县| 大名县| 徐州市| 武义县| 鹤峰县| 通山县| 上犹县| 南城县|