//--------------------------------使用jquery--------------------------------------------
//定義用戶名校驗的方法

function verify()
{
//首先測試一下頁面的按鈕按下,可以調用這個方法
//使用javascript的alert方法,顯示一個探出提示框
//alert("按鈕被點擊了!!!");

//1.獲取文本框中的內容
//document.getElementById("userName"); dom的方式
//Jquery的查找節點的方式,參數中#加上id屬性值可以找到一個節點。
//jquery的方法返回的都是jquery的對象,可以繼續在上面執行其他的jquery方法
var jqueryObj = $("#userName");
//獲取節點的值
var userName = jqueryObj.val();
//alert(userName);

//2.將文本框中的數據發送給服務器段的servelt
//使用jquery的XMLHTTPrequest對象get請求的封裝
$.get("AJAXServer?name=" + userName,null,callback);


}

//回調函數

function callback(data)
{
// alert("服務器段的數據回來了!!");
//3.接收服務器端返回的數據
// alert(data);
//4.將服務器段返回的數據動態的顯示在頁面上
//找到保存結果信息的節點
var resultObj = $("#result");
//動態的改變頁面中div節點中的內容
resultObj.html(data);
alert("");
}

//以上簡化如下

function verify()
{

$.get("AJAXServer?name="+$("#name").val(),null,function(data)
{
$("#result").html(data);
});
});
}


//---------------------使用XMLHTTPRequest對象來進行AJAX的異步數據交互-----------------------------------
var xmlhttp;

function verify()
{
//0。使用dom的方式獲取文本框中的值
//document.getElementById("userName")是dom中獲取元素節點的一種方法,一個元素節點對應HTML頁面中的一個標簽,如果<input>
//。value可以獲取一個元素節點的value屬性值
var userName = document.getElementById("userName").value;

//1.創建XMLHttpRequest對象
//這是XMLHttpReuquest對象無部使用中最復雜的一步
//需要針對IE和其他類型的瀏覽器建立這個對象的不同方式寫不同的代碼


if (window.XMLHttpRequest)
{
//針對FireFox,Mozillar,Opera,Safari,IE7,IE8
xmlhttp = new XMLHttpRequest();
//針對某些特定版本的mozillar瀏覽器的BUG進行修正

if (xmlhttp.overrideMimeType)
{
xmlhttp.overrideMimeType("text/xml");
}

} else if (window.ActiveXObject)
{
//針對IE6,IE5.5,IE5
//兩個可以用于創建XMLHTTPRequest對象的控件名稱,保存在一個js的數組中
//排在前面的版本較新
var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];

for (var i = 0; i < activexName.length; i++)
{

try
{
//取出一個控件名進行創建,如果創建成功就終止循環
//如果創建失敗,回拋出異常,然后可以繼續循環,繼續嘗試創建
xmlhttp = new ActiveXObject(activexName[i]);
break;

} catch(e)
{
}
}
}
//確認XMLHTtpRequest對象創建成功

if (!xmlhttp)
{
alert("XMLHttpRequest對象創建失敗!!");
return;

} else
{
alert(xmlhttp.readyState);
}

//2.注冊回調函數
//注冊回調函數時,之需要函數名,不要加括號
//我們需要將函數名注冊,如果加上括號,就會把函數的返回值注冊上,這是錯誤的
xmlhttp.onreadystatechange = callback;

//3。設置連接信息
//第一個參數表示http的請求方式,支持所有http的請求方式,主要使用get和post
//第二個參數表示請求的url地址,get方式請求的參數也在url中
//第三個參數表示采用異步還是同步方式交互,true表示異步
xmlhttp.open("GET","AJAXServer?name="+ userName,true);

//POST方式請求的代碼
//xmlhttp.open("POST","AJAXServer",true);
//POST方式需要自己設置http的請求頭
//xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//POST方式發送數據
//xmlhttp.send("name=" + userName);

//4.發送數據,開始和服務器端進行交互
//同步方式下,send這句話會在服務器段數據回來后才執行完
//異步方式下,send這句話會立即完成執行
xmlhttp.send(null);
}

//回調函數

function callback()
{
//alert(xmlhttp.readyState);
//5。接收響應數據
//判斷對象的狀態是交互完成

if (xmlhttp.readyState == 4)
{
//判斷http的交互是否成功

if (xmlhttp.status == 200)
{
//獲取服務漆器端返回的數據
//獲取服務器段輸出的純文本數據
var responseText = xmlhttp.responseText;
//將數據顯示在頁面上
//通過dom的方式找到div標簽所對應的元素節點
var divNode = document.getElementById("result");
//設置元素節點中的html內容
divNode.innerHTML = responseText;

} else
{
alert("出錯了!!!");
}
}
}


//-----------------xml----使用XMLHTTPRequest對象來進行AJAX的異步數據交互---xml--------------------------------
//自已寫的返回xml
httpServletResponse.setContentType("text/xml;charset=utf-8");
StringBuilder builder = new StringBuilder();
builder.append("<message>");
//使用responseXML的方式來接收XML數據對象的DOM對象
var domObj = xmlhttp.responseXML;

if (domObj)
{
//<message>123123123</message>
//dom中利用getElementsByTagName可以根據標簽名來獲取元素節點,返回的是一個數組
var messageNodes = domObj.getElementsByTagName("message");

if (messageNodes.length > 0)
{
//獲取message節點中的文本內容
//message標簽中的文本在dom中是message標簽所對應的元素節點的字節點,firstChild可以獲取到當前節點的第一個子節點
//通過以下方式就可以獲取到文本內容所對應的節點
var textNode = messageNodes[0].firstChild;
//對于文本節點來說,可以通過nodeValue的方式返回文本節點的文本內容
var responseMessage = textNode.nodeValue;



//將數據顯示在頁面上
//通過dom的方式找到div標簽所對應的元素節點
var divNode = document.getElementById("result");
//設置元素節點中的html內容
divNode.innerHTML = responseMessage;

} else
{
alert("XML數據格式錯誤,原始文本內容為:" + xmlhttp.responseText);
}

} else
{
alert("XML數據格式錯誤,原始文本內容為:" + xmlhttp.responseText);
}

//使用jquery返回xml

function verify()
{
//首先測試一下頁面的按鈕按下,可以調用這個方法
//使用javascript的alert方法,顯示一個探出提示框
//alert("按鈕被點擊了!!!");

//1.獲取文本框中的內容
//document.getElementById("userName"); dom的方式
//Jquery的查找節點的方式,參數中#加上id屬性值可以找到一個節點。
//jquery的方法返回的都是jquery的對象,可以繼續在上面執行其他的jquery方法
var jqueryObj = $("#userName");
//獲取節點的值
var userName = jqueryObj.val();
//alert(userName);

//2.將文本框中的數據發送給服務器段的servelt
//javascript當中,一個簡單的對象的定義方法

var obj =
{name:"123",age:20};
//使用jquery的XMLHTTPrequest對象get請求的封裝

$.ajax(
{
type: "POST", //http請求方式
url: "AJAXXMLServer", //服務器段url地址
data: "name=" + userName, //發送給服務器段的數據
dataType: "xml", //告訴JQuery返回的數據格式
success: callback //定義交互完成,并且服務器正確返回數據時調用的回調函數
});


}

//回調函數

function callback(data)
{
// alert("服務器段的數據回來了!!");
//3.接收服務器端返回的數據
//需要將data這個dom對象中的數據解析出來
//首先需要將dom的對象轉換成JQuery的對象
var jqueryObj = $(data);
//獲取message節點
var message = jqueryObj.children();
//獲取文本內容
var text = message.text();
//4.將服務器段返回的數據動態的顯示在頁面上
//找到保存結果信息的節點
var resultObj = $("#result");
//動態的改變頁面中div節點中的內容
resultObj.html(text);
alert("");
}

//--------------------------------中文亂碼問題--------------------------------------------
//1 頁在端發出的數據作一次encodeURI,服務器端使用new String(old.getBytes("iso8859-1","UTF-8"))
//頁面代碼修改
var url="AJAXServer?name="+encodeURI($("#userName").val());
//服務器servlet代碼修改
String old = httpServletRequest.getParamenter("name");
String name = new String(old.getBytes("iso8859-1"),"UTF-8");

//2 頁在端發出的數據作兩次encodeURI,服務器端使用URLDecoder.decode(old,"UTF-8")
//頁面代碼修改
var url="AJAXServer?name="+encodeURI(encodeURI($("#userName").val()));
//服務器servlet代碼修改
String old = httpServletRequest.getParamenter("name");
String name = URLDecoder.decode(old,"UTF-8");


//--------------------------------jquery隱藏/顯示浮動窗口的方法--------------------------------------------
//顯示浮動窗口的方法

function showwin()
{
//lert("準備顯示彈出窗口啦!!!");
//1.找到窗口對應的div節點
var winNode = $("#win");
//2.讓div對應的窗口顯示出來
//方法1,修改節點的css值,讓窗口顯示出來
//winNode.css("display","block");
//方法2,利用Jqeury的show方法
//winNode.show("slow");
//方法3,利用JQuery的fadeIn方法
winNode.fadeIn("slow");
}

//隱藏窗口的方法

function hide()
{
//1.找到窗口對應的節點
var winNode = $("#win");
//2.將窗口隱藏起來
//方法1,修改css
//winNode.css("display","none");
//方法2,利用hide方法
//winNode.hide("slow");
//方法3,利用fadeOut方法
winNode.fadeOut("slow");
}
//--------------------------------jquery局部刷新的方法--------------------------------------------
//需要點擊主菜單的按鈕時,對應的子菜單可以顯示,再次點擊子菜單則隱藏
頁面
<ul>
<a href="#">我是菜單1</a>
<li><a href="#" id="JQueryAutoComplete.html">我是子菜單1</a></li>
<li><a href="#" id="JQueryAutoComplete.html">我是子菜單2</a></li>
</ul>
//需要編寫代碼,在頁面裝載時,給所有的主菜單添加onclick的事件
//保證主菜單點擊時可以顯示或隱藏子菜單
//注冊頁面裝載時執行的方法

$(document).ready(function()
{
//這里需要首先找到所有的主菜單
//然后給所有的主菜單注冊點擊事件
//找到ul中的節點
var as = $("ul > a");

as.click(function()
{
//這里需要找到當前ul中的li,然后讓li顯示出來
//獲取當前被點擊的a節點
var aNode = $(this);
//找到當前a節點的所有li兄弟字節點
var lis = aNode.nextAll("li");
//讓子節點顯示或隱藏
lis.toggle("show");
});

$("li>a").click(function()
{
$("#content").load($(this).attr("id"));
});
});
posted on 2009-11-03 10:12
junly 閱讀(638)
評論(1) 編輯 收藏 所屬分類:
ajax/jquery/js