一、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>
<?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对象的实现
不过测试的时候发现一个问题,就是ie下第二个请求的值不是最新的,而在firefox下不会。原来是如果使用的是get,那么在ie下出现缓存问题。导致代码只执行一次。解决办法就是加随机数数,使url变为唯一。
像这样 var url = marketing.data.getGlobal("CONTEXT_PATH")+"/clientConnect/clientConnect_getClientParameter.action?t="+Math.random();
发现一个ajax问题总结贴,