js笔记二

一、jquery选择器

1、层次选择器

在给定的祖先元素下匹配所有的后代元素

<form>
  <label>Name:</label>
  <input name="name" />
  <fieldset>
      <label>Newsletter:</label>
      <input name="newsletter" />
</fieldset>
</form>

$(form input) 会选择<input name="name" /> 和<input name="newsletter" />

二、jquery请求的数据传给局部变量。

var data = {'urlSerModel.urlName':$("#urlName").val()};
			var url = marketing.data.getGlobal("CONTEXT_PATH")+'/webService/webService_theOnlyUrlName.action';
			var exist;
			$.ajaxSetup({
				  async: false // 使用同步方式执行AJAX
				});
			$.getJSON(url,data,function(data){
				if(data.res.result ==0) {
					if(true == data.isOnly) {
						$("#urlName").next('.note').text('该业务名存在,请使用其他的业务名。');
						$("#urlName").next('.note').css('color','red');
					} else {
						$("#urlName").next('.note').text('输入正确');
						$("#urlName").next('.note').css('color','green');
					}
					exist = data.isOnly;
				}
				
			});
 
$.ajaxSetup({ async: false // 使用同步方式执行AJAX }); 同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行
通过这个设置可以把取得的值赋值给 exist;

三、js跨域取数据

方式一、用js实现

设置域名localhost和manager.dev。(可以在本地改host文件实现,一般在C:\WINDOWS\system32\drivers\etc\hosts)。

localhost下写js读取manager.dev下的数据。

manager.dev

<?php
$date =  date('Y-m-d',time());
echo 'callBack.setTime("'.$date.'");';

localhost

<html>
<head>跨域js取值</head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<script type="text/javascript">

var callBack = {
	time : '',
	setTime : function(data) {
		time = data;
	},
	getTime : function(){
		return time;
	}
};
</script>
<script type="text/javascript" src="http://manager.dev/server.php"></script>
<script type="text/javascript">
window.onload = function(){
	var elTime = document.getElementById("time");
	var time = callBack.getTime();
	elTime.value = time;
};
</script>
<body>
<div><label>当前时间是:</label><input type="text" id="time" value=""></div>
</body>
</html>
jquery中的实现原理就是这样的,我们在来看看jquery中jsonp的使用。
client:
<script type="text/javascript">
 $(document).ready(function(){
 var url = "http://manager.dev/server.php";
	$.ajax({
		url: url,
		dataType : 'jsonp',
		jsonp: 'callfunc',
		success :function(data) {
			alert(data.msg);
		}
	})
 });
</script>
<body>
server:
<?php
$callback = $_GET['callfunc'];
echo "{$callback}({'msg':'this is a jquery jsonp test message!'})";
exit();
 

最近碰到连个ajax的问题。

1、如何在一个ajax请求的时候访问,另外一个ajax请求返回的值。

通过把异步请求改为同步可以解决,同步的意思是,一个请求要等到另外一个请求完成才继续执行。

jquery的实现

var url = marketing.data.getGlobal("CONTEXT_PATH")+ "/clientConnect/clientConnect_get4SClientSum.action";
	$.ajax(url,null,getnum,null,'POST',null,null);
	//得到4s客户端连接数
	function getnum(data){
		//得到最大连接数
		var url = marketing.data.getGlobal("CONTEXT_PATH")+"/clientConnect/clientConnect_getClientParameter.action?t="+Math.random();
		var maxNum;
		$.ajaxSetup({
			  async: false 
		});
		$.getJSON(url,function(data){
			if(data.res.result ==0){
				maxNum = data.warnLink;
			} else {
				//默认值
				maxNum = 1000;
			} 
		 }
	    );

javascript中xmlhttprequest对象的实现

XMLHttpRequest.open(method, url, async, username, password)
把xmlhttprequest.open(‘post’,'test.php’,false);

不过测试的时候发现一个问题,就是ie下第二个请求的值不是最新的,而在firefox下不会。原来是如果使用的是get,那么在ie下出现缓存问题。导致代码只执行一次。解决办法就是加随机数数,使url变为唯一。

像这样 var url = marketing.data.getGlobal("CONTEXT_PATH")+"/clientConnect/clientConnect_getClientParameter.action?t="+Math.random();

发现一个ajax问题总结贴,

http://www.code-design.cn/blogdetail392.html

posted @ 2011-01-21 10:05  phpzxh  阅读(569)  评论(0编辑  收藏  举报