Ajax學習二

 Ajax返回的數據格式有3種,text/xml/json 

無刷新數據交換技術:

flash, java applet, 框架, iframe,  ajax)


json數據 ——一種原生態的數據、

ajax原理:使用XMLHTTPREQUEST異步傳輸獲得數據,賦給佔位符、

u ajax在什麼地方用的多

 

動態加載數據,按需取得數據。【樹形菜單、聯動菜單.../省市聯動】

改善用戶體驗。【輸入內容前提示、帶進度條文件上傳...

 

電子商務應用。 【購物車、郵件訂閱...

訪問第三方服務。 【訪問搜索服務、rss閱讀器】

5. 數據的佈局刷新

<?php  ?> 其中?>的有無表示被包含於包含的關係。


☞ 使用get方式發出請求,如果提交的用戶名不變化,瀏覽器將不會真的發請求,而是緩存取數據., url

 

解決方法 

1. url 後帶一個總是變化的參數,比如當前時間

var url="/ajax/registerProcess.php?mytime="+new  Date()+"&username="+$("username").value;

2. 在服務器回送結果時,禁用緩存.

 

//這裏兩句話很重要,第一講話告訴瀏覽器返回的數據是xml格式

header("Content-Type: text/xml;charset=utf-8");

//告訴瀏覽器不要緩存數據

header("Cache-Control: no-cache");

 

1. 使用 ajax完成用戶名的驗證

 

register.php

 

<html>

<head>

<title>用戶註冊</title>

<meta http-equiv="content-type" content="text/html;charset=utf-8"/>

<script type="text/javascript">

 

//創建ajax引擎

function getXmlHttpObject(){

var xmlHttpRequest;

//不同的瀏覽器獲取對象xmlhttprequest 對象方法不一樣

if(window.ActiveXObject){

xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");

}else{

 

xmlHttpRequest=new XMLHttpRequest();

}

 

return xmlHttpRequest;

 

}

var myXmlHttpRequest="";

 

//驗證用戶名是否存在

function checkName(){

myXmlHttpRequest=getXmlHttpObject();

 

//怎麼判斷創建ok

if(myXmlHttpRequest){

//通過myXmlHttpRequest對象發送請求到服務器的某個頁面

//第一個參數表示請求的方式, "get" / "post"

//第二個參數指定url,對哪個頁面發出ajax請求(本質仍然是http請求)

//第三個參數表示 true表示使用異步機制,如果false表示不使用異步

var url="/ajax/registerProcess.php?mytime="+new  Date()+"&username="+$("username").value;

//打開請求.

myXmlHttpRequest.open("get",url,true);

//指定回調函數.chuli是函數名

myXmlHttpRequest.onreadystatechange=chuli;

 

//真的發送請求,如果是get請求則填入 null即可

//如果是post請求,則填入實際的數據

myXmlHttpRequest.send(null); 

 

 

}

}

 

//回調函數

function chuli(){

//window.alert("處理函數被調回"+myXmlHttpRequest.readyState);

//我要取出從registerPro.php頁面返回的數據

if(myXmlHttpRequest.readyState==4){

//取出值,根據返回信息的格式定.text

//window.alert("服務器返回"+myXmlHttpRequest.responseText);

 

$('myres').value=myXmlHttpRequest.responseText;

}

}

 

//這裏我們寫一個函數

function $(id){

return document.getElementById(id);

}

</script>

</head>

<body>

<form action="???" method="post">

    用戶名字:<input type="text"  οnkeyup="checkName();"  name="username1" id="username"><input type="button" οnclick="checkName();"  value="驗證用戶名">

    <input style="border-width: 0;color: red" type="text" id="myres">

    <br/>

    用戶密碼:<input type="password" name="password"><br>

    電子郵件:<input type="text" name="email"><br/>

    <input type="submit" value="用戶註冊">

    </form>

     <form action="???" method="post">

    用戶名字:<input type="text" name="username2" >

   

    <br/>

    用戶密碼:<input type="password" name="password"><br>

    電子郵件:<input type="text" name="email"><br/>

    <input type="submit" value="用戶註冊">

    </form>

 

</body>

</html>

 

 

registerpro.php

 

<?php

//這裏兩句話很重要,第一講話告訴瀏覽器返回的數據是xml格式

header("Content-Type: text/xml;charset=utf-8");

//告訴瀏覽器不要緩存數據

header("Cache-Control: no-cache");

 

//接收數據

$username=$_GET['username'];

 

 

if($username=="shunping"){

echo "用戶名不可以用";//注意,這裏數據是返回給請求的頁面.

}else{

echo "用戶名可以用";

}

 

 

?>

 

 

 

 

 

 

 

 

u ajaxpost方式請求

 

在前面案例我們修改一下 :

 

 

關鍵代碼

register.php

var url="/ajax/registerProcess.php";

//這個是要發送的數據

var data="username="+$('username').value;

//打開請求.

myXmlHttpRequest.open("post",url,true);

//還有一句話,這句話必須.

myXmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

//指定回調函數.chuli是函數名

myXmlHttpRequest.onreadystatechange=chuli;

 

//真的發送請求,如果是get請求則填入 null即可

//如果是post請求,則填入實際的數據

myXmlHttpRequest.send(data);

registerPro.php關鍵碼 :

$username=$_POST['username'];


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章