您的位置:首页 > Web前端 > JavaScript

21天学通Java学习笔记-Day13(javascript-ajax)

2014-07-06 19:14 295 查看
HTML & CSS : 不知道怎么做笔记,不知道怎么系统学习!

JavaScript:

两种表现形式:

1:直接在 HTML 中嵌入 javascript 脚本:

demo.html

<html>
<head>
<title>
test
</title>
</head>
<body >
<script type="text/javascript">
alert("hello javascript wolrd!!");
</script>
</body>
</html>


2:将 javascript 代码放在 js 文件中:

demo.html

<html>
<head>
<title>
test
</title>
</head>
<body >
<script type="text/javascript" src="demo.js">
</script>
</body>
</html>


demo.js

alert("hello javascript wolrd!!");


JavaScript 是弱类型语言,不需要声明数据类型,声明变量要用关键字 var :

var name = "joe"; //字符串类型

var age = 12; //整数类型

也可以连着声明和赋值:

var name = "joe" , age = 12 ;

javascript 没有声明类型所以变量可以放任何类型:

var name = "joe";

name = 12; //会覆盖掉原来的"joe"

javascript 基础类型:

数值:

整数 var a = 123;

浮点 var b = 12.34;

负数 var c = -23;

字符串: var d = "hello";

布尔值: var e = true 或者 false

数组:var f = new Array( ); 也可以规定数组长度 var f = new Array( 5 );

f[ 0] = 1;

f[ 1] = 2;

..................

数组简化定义:

var f = [ ];

数组也可以直接赋值:

var f = new Array(1, 2, 3, 4);

数组甚至可以呼和类型:

var f = new Array("a", 2, false);

关联数组(不以下标作为索引):

var g = new Array( );

g["name"] = "joe";

g["age"] = 12;

g["living"] = false;

//关联数组提高可读性

算术操作符:

+(加) , -(减) , *(乘) , /(除) , %(求模)

javascript 支持 ++(自增) , --(自减)

javascript 也支持快捷操作:

a += 1;

a *= 1;

a -= 1;

a /= 1;

a %= 1;

javascript 比较操作符:

== 等于

< 小于

> 大于

<= 小于等于

>= 大于等于

!= 不等于

javascript 逻辑操作符:

&& 逻辑与

|| 逻辑或

! 逻辑非

循环分支语句,if else , while , do while , for 与java用法一样

javascript 函数,定义函数要用关键字 function:(函数可以带有参数)

function show( ){
var bea = Array("name" , "age" );
for( var a = 0; a<bea.length; a++) {
alert(bea[ a]);
}
}


在函数中的变量使用 var 就会视为局部变量,如果没有 var 就视为全局变量

javascript 可以直接 new 一个对象并且赋值给一个变量

var a = new e;

javascript 内置对话框:

alert( ); 对话框

confirm( ); 确认对话框

<html>
<head>
<script type="text/javascript">
function confirmit(){
if(confirm("are you ok?")){
document.test.submit();
}
}
</script>
</head>
<body>
<form name="test" action="" method="post" >
<input type="button" value="delete" onclick="javascript:confirmit()" name="aaa">
</body>
</html>


form 表单 onclick="......"事件在点击后发生

DOM 的一些内置对象:

window 当前窗口

window.onload = function(){ }; //当页面全部加载以后再执行里面的代码

<html>
<head>
<script type="text/javascript">
window.onload = function(){
alert("hello javascript wolrd!!");
};
</script>
</head>
<body>
HELLO
</body>
</html>


document 当前文档对象

DOM 的一些方法:

getElementById( id); //返回一个给定 id 属性值的元素节点相对应对象。

代码:

<html>
<head>
<title>
test
</title>
</head>
<body >
<h1>hello</h1>
<ul id="uu">
<li>aaaaa</li>
<li>bbbbb</li>
<li>ccccc</li>
<li>ddddd</li>
</ul>
<script type="text/javascript">
alert(typeof document.getElementById("uu"));  //typefo:返回对象类型 ; documen:页面本身对象
</script>
</body>
</html>


getElementsByTagName( ); //返回一个对象数组,每个对象分别对应着文档里有着给定标签的一个元素。

代码:

<html>
<head>
<title>
test
</title>
</head>
<body >
<h1>hello</h1>
<ul id="uu">
<li>aaaaa</li>
<li>bbbbb</li>
<li>ccccc</li>
<li>ddddd</li>
</ul>
<script type="text/javascript">
var a = document.getElementsByTagName("li");
for(var i=0;i<a.length;i++){
alert(typeof a[i]);   //会跳出三个对话框
}
</script>
</body>
</html>


getAttribute( ); //获取属性值。

代码:

<html>
<head>
</head>
<body>
<p id="intro" title="tiin">
Hello World!!
</p>
</body>
<script type="text/javascript">
var a = document.getElementById("intro");
var t = a.getAttribute("title");;
alert(typeof a);
</script>
</html>


<html>
<head>
<script type="text/javascript">
function check(){           //定义方法
if(document.test.t.value==""){  //判断页面对象document 中的 test.t 的值是否是空
alert("NOT NULL!!");
return false;     //返回flase
}
return true;                 //返回true
}
</script>
</head>
<body>
<form name="test" action="" method="post" onsubmit="return check()">
<input type="text" name="t">
<input type="submit" value="ok">
</body>
</html>


form表单 action=""提交后转到哪个页面 method="post"提交方式 onsubmit ="return true(true表示提交,flase表示不提交)"必须完成里面内容才提交成功

<html>
<head>
<script type="text/javascript">
function check(){
if((test.t.value.length<3)||(test.t.value.length>6)){ //直接获取form的name和input的name
alert("t {3-6}");
return false;
}
return true;
}
</script>
</head>
<body>
<form name="test" action="" method="post" onsubmit="return check()">
<input type="text" name="t">
<input type="submit" value="ok">
</body>
</html>


<html>
<head>
<script type="text/javascript">
function check(){
if((test.t.value.length<3)||(test.t.value.length>6)){
document.getElementById("usernameErr").innerHTML = "<font color='red'>请输入正确的用户名,用户名长度为3-6位!</font>"; //innerHTML 输出HTML内容标签
test.t.focus();  //失去焦点
return false;
}
return true;
}
</script>
</head>
<body>
<form name="test" action="" method="post" onsubmit="return check()">
<input type="text" name="t">
<input type="submit" value="ok">
<span id="usernameErr"></span>
</body>
</html>


Ajax:

HMLHttpRequest:

创建实例:

var xhr = new XMLHttpRequest( );


IE浏览器中创建 ActiveX 对象:

var xhr =new ActiveXObject("Microsoft.XMLHTTP");


检测是否存在 ActiveX:

if( window.ActiveXObject ) {
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
}


将检测对象打包成可复用函数:

function getHTTPObject( ) {
var xhr = false;
if( window.ActiveXObject ) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}else{
xhr = new XMLHttpRequest( );
}
return xhr;
}


var request = getHTTPObject( );   //赋给变量,方便调用


完美创建 XMLHttpRequest :

var xhr;
var myxhr;

function getHttpObject(){
xhr = false;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();

}else if(window.ActiveXObject){
try{
xhr = new ActiveObject("Msxml12.XMLHTTP");

}catch(e){
try{
xhr = new ActiveXObject("Microsoft.XMLHTTP");

}catch(e){
xhr = false;
}
}
}
return xhr;
}


创建 XMLHttpRequest 实例后,实现与服务器进行通讯,包含三个关键部分:

( 1 ) onreadystatechange 事件处理函数

var myxhr = getHttpObject();
if( myxhr ) {
myxhr.onreadystatechange = huidiaohanshu; //一个回调函数,不需要括号
}


( 2 ) open 方法

open方法必须要有三个参数( 请求类型,服务器上文件的位置,true )

请求类型 分为:POST, GET(从服务器检索文件用GET,向服务器发送数据用POST)

服务器文件位置 URL

true,表示异步传输

url = "test.txt";

myxhr.open( "GET", url, true );

( 3 ) send 方法

请求类型是GET,参数null

myxhr.send(null);

接收响应:

readyState 属性表示 Ajax 请求的当前状态。

0 代表未初始化。还没有调用 open 方法。

1 代表正在加载。open 方法已经调用,单 send 方法还没有被调用。

2 代表已经加载完毕。send 方法已经被调用,请求已经开始。

3 代表交互中。服务器正在发送响应。

4 代表完成。响应发送完毕。

function displayResponse(myxhr){
if(myxhr.readyState == 4){
//加载完成
}


status 属性表示服务器发送状态。

404 表示找不到服务器资源。

403 表示禁止访问。

500 表示内部服务器出错。

200 表示一切正常。

function displayResponse(myxhr){
if( myxhr.readyState == 4 ){
if( myxhr.status==200 ){
//服务器正常
}
}


responseText

服务器返回字符串,返回时HTML还是XML取决于服务器

responseXML

服务器返回的是XML

XML 是一种通用的标记语言,用于对数据进行描述。

XML 属于一种描述性语言,文档结构需要遵循一定的规范,但所用的词语没有任何限制。

例子代码:

<?xml version="1.0" encoding="utf-8" ?>
<person>
<name>Joe</name>
<age>20</age>
<email>joe@email.com</email>
</person>


第一行<?xml version="1.0" encoding="utf-8" ?>是XML声明,制定了版本和字符编码。

xml 的标签都是成对出现。

xml 不能进行任何操作,用来储存数据。

读取 XML 内容操作:(包含test1.xml,test2.xml,test3,xmldemo.html,)

xmldemo.html 代码:

<html>
<head>
<script type="text/javascript" src="xmltest.js"></script>
</head>
<body>
<h1>People</h1>
<ul>
<li>
<a href="test1.xml" onclick="grabFile(this.href);return false;">Andy</a>
</li>
<li>
<a href="test2.xml" onclick="grabFile(this.href);return false">Tom</a>
</li>
<li>
<a href="test3.xml" onclick="grabFile(this.href);return false">Suy</a>
</li>
</ul>
<div id="xxx"></div>
</body>
</html>


xmltest.js 代码:

var xhr;
var myxhr;
function getHttpObject(){
xhr = false;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else if(window.ActiveXObject){
try{
xhr = new ActiveObject("Msxml12.XMLHTTP");
}catch(e){
try{
xhr = new ActiveXObject("Microsoft.XMLHTTP");

}catch(e){
xhr = false;
}
}
}
return xhr;
}

function grabFile(file){
myxhr = getHttpObject();
if(myxhr){
myxhr.onreadystatechange = function(){
parseResponse(myxhr);
}; //指定一个回调函数,处理从服务器返回的结果.
url = file;
myxhr.open("GET",url,true); //准备发送,,true表示同步处理
myxhr.send(null); //发送请求
}
}

function parseResponse(myxhr){
if(myxhr.readyState == 4){
if(myxhr.status == 200 || myxhr.status == 304){
var data = myxhr.responseXML;
var name = data.getElementsByTagName("name")[0].firstChild.nodeValue
var website = data.getElementsByTagName("website")[0].firstChild.nodeValue
var email = data.getElementsByTagName("email")[0].firstChild.nodeValue
var a= "<font color='red'>";
var b = "</font>";
document.getElementById("xxx").innerHTML=a+name+"<br/>"+website+"<br/>"+email+b;
}
}
}


test1.xml 代码:

<?xml version="1.0" encoding="utf-8" ?>
<person>
<name>Andy</name>
<website>www.andy.com</website>
<email>andy@email.com</email>
</person>


test2.xml 代码:

<?xml version="1.0" encoding="utf-8" ?>
<person>
<name>Tom</name>
<website>www.tom.com</website>
<email>tom@email.com</email>
</person>


test3.xml 代码:

<?xml version="1.0" encoding="utf-8" ?>
<person>
<name>Suy</name>
<website>www.suy.com</website>
<email>suy@email.com</email>
</person>


以上代码要放进服务器里跑(比如:Apache,Tomcat)

简单验证名字是否重复(包含test.html 和 test.txt 两个文件):

test.html代码:

<html>
<head>
<script type="text/javascript">
var xhr;
var myxhr;
function getHttpObject(){
xhr = false;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else if(window.ActiveXObject){
try{
xhr = new ActiveObject("Msxml12.XMLHTTP");

}catch(e){
try{
xhr = new ActiveXObject("Microsoft.XMLHTTP");

}catch(e){
xhr = false;
}
}
}
return xhr;
}
function grabFile(file){
myxhr = getHttpObject();
if(myxhr){
myxhr.onreadystatechange = function(){
displayResponse(myxhr);
};         //指定一个回调函数,处理从服务器返回的结果.
url = file;
myxhr.open("GET",url,true);  //准备发送,,true表示同步处理
myxhr.send(null);  //发送请求
}
function displayResponse(myxhr){

if(myxhr.readyState == 4){
//  alert(myxhr.status);
if(myxhr.status == 200 || myxhr.status == 304){
// alert(myxhr.responseText);
var a = myxhr.responseText;  //从ajax引擎中取出结果
var b = document.getElementById("ues").value;
if( a==b){
//alert("名字重复");
document.getElementById("xxx").innerHTML = "<font color='red'>重复!</font>";
}else{
//alert('名字不重复');
document.getElementById("xxx").innerHTML = "<font color='red'>不重复!!</font>";
}
}
}
}
}
</script>
<title> test ajax </title>

</head>
<body>
<form action="" method="post" >
<input type="text" name="t" id="ues">
<input type="button" value="ok" onclick="grabFile('test.txt');">  //选择 button , 使用 submit 会失效
<span id="xxx"></span>
</body>
</html>


test.txt 内容:

aaa

以上代码放在服务器里跑(比如:Apache,Tomcat)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: