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

你可能感兴趣的:(js)