-----------------------------------------------------------------------
jQuery:
ready()==onload
$(document).ready(function(){});==$().ready(function(){});==$(function(){});
提示:ready() 函数不应与 <body onload=""> 一起使用。
-----------------------------------------------------------------------
jQuery ajax-get():
语法:$(selector).get(url,data,success(response,status,xhr),dataType)
参数: 描述:
url 必需。***规定将请求发送到哪个 URL。***
data 可选。规定连同请求发送到服务器的数据。
success(response,status,xhr) 可选。规定当请求成功时运行的函数。
response - 包含来自请求的结果数据
status - 包含请求的状态
xhr - 包含 XMLHttpRequest 对象
dataType 可选。规定预计的服务器响应的数据类型。
可能的类型:"xml";"html";"text";"script";"json";"jsonp"
等价于:
$.ajax({
url:url,
data:data,
success,success,
dataType:dataType
});
reg:
请求 test.php 网页,忽略返回值:
$.get("test.php");
reg:
请求 test.php 网页,传送2个参数,忽略返回值:
$.get("test.php",{name:"John",time:"2pm"});
reg:
显示 test.php 返回值(HTML 或 XML,取决于返回值):
$.get("test.php",function(data){
alert("Data Loaded:"+data);
});
reg:
显示 test.cgi 返回值(HTML 或 XML,取决于返回值),添加一组请求参数:
$.get("test.cgi",{name:"John",time:"2pm"},function(data){
alert("Data Loaded"+data);
});
----------------------------------------------------------------------------------
$.ajax():
1.url:
要求为String类型的参数,(默认为当前页地址)发送请求的地址。
2.type:
要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。
3.timeout:
要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置4.async:
要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。
5.cache:
要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false),设置为false将不会从浏览器缓存中加载请求信息。
6.data:
要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看 processData选项。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。
7.dataType:
要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。可用的类型如下:
xml:返回XML文档,可用JQuery处理。
html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。
script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。
json:返回JSON数据。
jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。
text:返回纯文本字符串。
8.beforeSend:
要求为Function类型的参数,发送请求前可以修改XMLHttpRequest对象的函数,例如添加自定义HTTP头。在beforeSend中如果返回false可以取消本次ajax请求。XMLHttpRequest对象是惟一的参数。
function(XMLHttpRequest){
this; //调用本次ajax请求时传递的options参数
}
9.complete:
要求为Function类型的参数,请求完成后调用的回调函数(请求成功或失败时均调用)。参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。
function(XMLHttpRequest, textStatus){
this; //调用本次ajax请求时传递的options参数
}
10.success:要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。
(1)由服务器返回,并根据dataType参数进行处理后的数据。
(2)描述状态的字符串。
function(data, textStatus){
//data可能是xmlDoc、jsonObj、html、text等等
this; //调用本次ajax请求时传递的options参数
}
11.error:
要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。ajax事件函数如下:
function(XMLHttpRequest, textStatus, errorThrown){
//通常情况下textStatus和errorThrown只有其中一个包含信息
this; //调用本次ajax请求时传递的options参数
}
12.contentType:
要求为String类型的参数,当发送信息至服务器时,内容编码类型默认为"application/x-www-form-urlencoded"。该默认值适合大多数应用场合。
13.dataFilter:
要求为Function类型的参数,给Ajax返回的原始数据进行预处理的函数。提供data和type两个参数。data是Ajax返回的原始数据,type是调用jQuery.ajax时提供的dataType参数。函数返回的值将由jQuery进一步处理。
function(data, type){
//返回处理后的数据
return data;
}
15.global:
要求为Boolean类型的参数,默认为true。表示是否触发全局ajax事件。设置为false将不会触发全局ajax事件,ajaxStart或ajaxStop可用于控制各种ajax事件。
16.ifModified:
要求为Boolean类型的参数,默认为false。仅在服务器数据改变时获取新数据。服务器数据改变判断的依据是Last-Modified头信息。默认值是false,即忽略头信息。
17.jsonp:
要求为String类型的参数,在一个jsonp请求中重写回调函数的名字。该值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,例如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。
18.username:
要求为String类型的参数,用于响应HTTP访问认证请求的用户名。
19.password:
要求为String类型的参数,用于响应HTTP访问认证请求的密码。
20.processData:
要求为Boolean类型的参数,默认为true。默认情况下,发送的数据将被转换为对象(从技术角度来讲并非字符串)以配合默认内容类型"application/x-www-form-urlencoded"。如果要发送DOM树信息或者其他不希望转换的信息,请设置为false。
21.scriptCharset:
要求为String类型的参数,只有当请求时dataType为"jsonp"或者"script",并且type是GET时才会用于强制修改字符集(charset)。通常在本地和远程的内容编码不同时使用。
22.顺便说一下$.each()函数:
$.each()函数不同于JQuery对象的each()方法,它是一个全局函数,不操作JQuery对象,而是以一个数组或者对象作为第1个参数,以一个回调函数作为第2个参数。回调函数拥有两个参数:第1个为对象的成员或数组的索引,第2个为对应变量或内容。
/*
*根据名称与值,获取请求响应数据中的某部分
*@Param d为请求响应后的数据
*@Param n为数据中文说明字符
*@Param d为数据在响应数据中的元素名称
*/
reg:
$(function(){
$('#send').click(function(){
$.ajax({
type:"GET",
url:"test.json",
data:{username:$("#username").val(),$("content").val()}
dataType:"json",
success:function(data){////传回请求响应的数据
$('#resText').empty();//清空resText里面的所有内容
var html= '';//初始化保存内容变量
$.each(data,function(commentIndex,comment){
html+='<div class="comment"><h6>'+comment['username']
+':</h6><p class="para"'+comment['contenet']+'</p><div>'
});
$("#resText").html(html);//显示处理后的数据
}
});
});
});
----------------------------------------------------------------------------------
什么是Ajax?
Ajax是(Asynchronous JavaScript And XML)是异步的JavaScript和xml。也就是异步请求更新技术。Ajax是一种对现有技术的一种新的应用,不是一门新语言。它是用JavaScript编写。与xml的关系就是可以读取和返回xml文件。
Ajax的核心对象就是xmlHttpRequest
XMLHttpRequest用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
----------------------------------------------------------------------------------
Ajax实例(焦点离开验证用户是否存在)
[javascript]
var xmlHttp;//声明xmlHttp对象
//实例化xmlHttpRequest对象
function createXMLHttpRequest() {
//表示当前浏览器不是ie,如ns,firefox
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
//input失去焦点事件onblur(),调用这个js方法验证
function validate(field) {
if (trim(field.value).length != 0) {
//创建XMLHttpRequest
createXMLHttpRequest();
//每次请求的url地址不同,利用时间产生不同url地址,可以防止缓冲造成问题
var url = "user_validate.jsp?userId=" + trim(field.value) + "×tamp=" + new Date().getTime();
xmlHttp.open("GET", url, true);
//方法地址,处理完成后自动调用,回调
xmlHttp.onreadystatechange=function() { //匿名函数
if(xmlHttp.readyState == 4) { //Ajax引擎初始化成功
if (xmlHttp.status == 200) { //http协议成功
document.getElementById("userIdSpan").innerHTML = "<font color='red'>" + xmlHttp.responseText + "</font>";
}else {
alert("请求失败,错误码=" + xmlHttp.status);
}
}
};
//将参数发送到Ajax引擎
xmlHttp.send(null);
}else {
document.getElementById("userIdSpan").innerHTML = "";
}
}
[html]
<td width="78%">
<input name="userId" type="text" class="text1" id="userId"
size="10" maxlength="10" onkeypress="userIdOnKeyPress()" value="<%=userId %>" onblur="validate(this)"><span id="userIdSpan"></span>
</td>
[java]//后台验证方法利用jsp编写
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@ page import="com.bjpowernode.drp.sysmgr.manager.*" %>
<%
//可以采用清除缓存的方法,如下
//response.setContentType("text/xml");
//response.setHeader("Cache-Control", "no-store"); //HTTP1.1
//response.setHeader("Pragma", "no-cache"); //HTTP1.0
//response.setDateHeader("Expires", 0);
//out.println("Hello");
//Thread.currentThread().sleep(3000);
String userId = request.getParameter("userId");
if (UserManager.getInstance().findUserById(userId) != null) {
out.println("用户代码已经存在");
}
%
----------------------------------------------------------------------------------
var a = {} 与 var a = function(){} 的区别?(类似于ztree的解析)
var a = {}
此时a是一个***对象***,是一个没有任何属性的对象。
var a = {'name':'object'}
此时a是一个对象,是一个有一个属性的对象,属性名为name,属性的值为object。
alert(a.name) 或者alert(a[name])的结果都是object,这是对象访问属性的两种方式。
var a = function(){}
此时a指向一个函数,相当于有一个函数,名为a,可以这么调用这个函数:
a()
只不过这个函数什么都没有做。
var a = function(){
alert(1);
}
此时a是一个函数,调用a()执行的是函数体,也就是 alert(1)
-----------------------------------------------------------------------------------
对于jsp页面的访问跳转,要做到通过后台进行访问,直接访问是不可行的.
用ajax传值.
-----------------------------------------------------------------------------------
error:
存值与数据库类型对不上报ORA错误
-----------------------------------------------------------------------------------
var data = deviceUseTable.row($(this).parent()).data();
row:
js 中关于table表格的cell,row 的属性的操作
标签: tableurlbuttonfunctioninput
2010-06-04 18:17 3593人阅读 评论(0) 收藏 举报
<html>
<head>
<title>添加行</title>
<script type="text/JavaScript">
function addRow(tb)
{
var tb=document.getElementById(tb);
alert(tb.rows(0).cells(0).innerText);
var tbody = tb.childNodes[0];
//插入行
tbody.insertRow(0);
//插入列
tbody.rows[0].insertCell(0);
tbody.rows[0].cells[0].setAttribute("align","center");
tbody.rows[0].cells[0].setAttribute("colspan","2");
tbody.rows[0].cells[0].appendChild(document.createTextNode("员工表"));
}
</script>
</head>
<body>
<table id="mytab" style="width:100px">
<tr> <td>编号 </td> <td>姓名 </td> </tr>
<tr> <td>1 </td> <td>小王 </td> </tr>
<tr> <td>2 </td> <td>小明 </td> </tr>
<tr> <td>3 </td> <td>小如 </td> </tr>
<tr> <td>4 </td> <td>小陈 </td> </tr>
<tr> <td>5 </td> <td>小赵 </td> </tr>
<tr> <td>6 </td> <td>小刘 </td> </tr>
<tr> <td>7 </td> <td>小王 </td> </tr>
<tr> <td>8 </td> <td>小明 </td> </tr>
<tr> <td>9 </td> <td>小如 </td> </tr>
<tr> <td>10 </td> <td>小陈 </td> </tr>
</table>
<input type="button" name="btnAddRow" onclick="addRow('mytab')" value="添加行"/>
</body>
</html>
来自网路的东东:
第一步, 获得当前的cell,也就是 this.
第二步, this.parentNode也就是tr
遍历tr的cells,获取所有cell的innerText
我所说的都是可行的概念,虽然没有贴出源代码,还是可以琢磨出来的.
获取所有cell的值.
var permTable = document.getElementById('permMatrix');
var cells = permTable.rows(0).cells;
var cellsLength = cells.length;
for(var j=2; j < cellsLength; j++)
{
url+=cells[j].innerText+";";
}
var rowsLength=permTable.rows.length;
for(var i = 1; i < rowsLength; i++)
{
url += "&folder" + i + "=";
var cells = permTable.rows(i).cells;
var cellsLength = cells.length;
for(var j=0; j < cellsLength; j++)
{
url+=cells[j].innerText+";";
}
}
-----------------------------------------------------------------------------------
jQuery->parent:
jquery .parents(), .parent() 和 closest()方法
2014-02-18 11:46 5038人阅读 评论(0) 收藏 举报
分类: jQuery(5)
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
parent是找当前元素的第一个父节点,parents是找当前元素的所有父节点
parent()、parents()与closest()方法两两之间有类似又有不同,本篇简短的区分一下这三个方法。通过本篇内容,大家将会在以后使用.parent()、parents()和closest()时不会显得无从下手。
我们直接看例子来来说明一下这三个方法的使用区别:
<ul id="menu" style="width:100px;">
<li>
<ul>
<li>
<a href="#">Home</a>
</li>
</ul>
</li>
<li>
End
</li>
</ul>
接下来,分别看看这三个方法:
//点击Home时
$("#menu a").click(function() {
$(this).parent("ul").css("background", "yellow"); //0
$(this).parent("li").parent("ul").css("background", "yellow"); //1
$(this).parents("ul").css("background", "yellow"); //2
$(this).closest("ul").css("background", "yellow"); //3
return false; });
1.parent()方法从指定类型的直接父节点开始查找,在"0"中,<a>的直接父节点是<li>所以在这里找不到<ul>父节点。在"2"中先找到了<li>,接着找到<ul>,并将它的背景色设置为yellow。parent()返回一个节点。
2.parents()方法查找方式同parent()方法类似,不同的一点在于,当它找到第一的父节点时并没有停止查找,而是继续查找,最后返回多个父节点,如在"2"中,使得id为menu的ul整个背景色变成了yellow。
3.closest()方法查找时从包含自身的节点找起,它同parents()很类似,不同点就在于它只返回一个节点如在"3"中,实现的功能同1相同。但它使得代码量减小,同"2"相比又只返回单一的一个节点。可见,closest()方法在项目中的使用频率是比较大的。
但是注意一点:
看jQuery官方的解释:
closest(expr,[context]|object|element)
概述
jQuery 1.3新增。从元素本身开始,逐级向上级元素匹配,并返回最先匹配的元素。。
closest会首先检查当前元素是否匹配,如果匹配则直接返回元素本身。如果不匹配则向上查找父元素,一层一层往上,直到找到匹配选择器的元素。如果什么都没找到则返回一个空的jQuery对象。
closest和parents的主要区别是:1,前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找;2,前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进一个临时集合中,再用给定的选择器表达式去过滤;3,前者返回0或1个元素,后者可能包含0个,1个,或者多个元素。
closest对于处理事件委托非常有用。
这里parents()方法虽然是将查询到的元素都放在 了一个临时集合中, 但是它并不是按照正常Dom结构放的, 而是按照查询的顺序放到临时容器中的, 相当于是原始文档的倒序放置方式. 注意: 这里倒序的意思是说: 元素的存放位置是倒序的, 例如: :first:, :last 等存放的顺序是倒序的.
因为closest() 函数逐级向上查找,直到发现匹配的元素后就停止了, 因此它不支持 过滤选择器 tr:first 等选择器, 而 parents() 是要从多个元素中选择出来一个适合的, 因此它可以使用过滤选择器.
例如:
$(this).closest("tr").remove();
$(this).parents("tr:first").remove();
-----------------------------------------------------------------------------------
ajax.reload()
重新加载数据
说明
这个方法提供了使用已经定义的url重新请求服务器取回数据给表格显示,如果你需要更改请求路径可以使用 ajax.url()DT
数据类型
functionajax.reload( callback, resetPaging )
参数:
名称 类型 是否可选
1 callback functionJS Yes - default:null
当服务器返回数据并重绘完毕时执行此回调方法,回调方法返回的是服务器返回的数据
2 resetPaging booleanJS Yes - default:true
重置(默认或者设置为true)或者保持分页信息(设置为false)
返回:
DataTables.ApiDT ,
DataTables.Api 实例
示例
每30秒重新加载表数据(分页重置)
1 var table = $('#example').DataTable( {
2 ajax: "data.json"
3 } );
4
5 setInterval( function () {
6 table.ajax.reload();
7 }, 30000 );
每30秒重新加载表数据(分页留存)
var table = $('#example').DataTable( {
ajax: "data.json"
} );
setInterval( function () {
table.ajax.reload( null, false ); // 刷新表格数据,分页信息不会重置
}, 30000 );
使用回调函数来更新外部元素
var table = $('#example').DataTable();
table.ajax.reload( function ( json ) {
//这里的json返回的是服务器的数据
$('#myInput').val( json.lastInput );
} );
-----------------------------------------------------------------------------------