解决方案 »
- 运用js达到页面后台自动化操作
- jquery下获取图片链接的跳转地址
- 使用JavaScript如何弹出 explorer 用户提示框
- 下拉菜单的问题,点子菜单会缩回去,请高手帮忙!
- 幻灯拍片可以在火狐,ie8中显示,但在ie6,ie7中无法显示 为什么
- setTimeout的循环难题
- 如何在客户端定位TreeView选中的结点?(类似锚点那种定位,高分,急!!)
- embed 在netscape中控制问题???(请大家帮忙!!)
- 怎麼用css 設置 td 的 align valign 屬性,要設置幾種,分不同的需要引用,不能用 td { }格式!! 謝謝!!!
- 窗口属性的控制。
- 用Jquery怎么控制div层的显示、消失?
- Ext的Toolbar的一个问题
{
dojo.connect(zoonMapstationGraphicLayer,
"onMouseOver",
function(evt) {
var attr = evt.graphic.attributes; requestZoonFoodPeriodData(attr.mainCrop1,attr.mainCrop2, attr.mainCrop3); //查询数据库操作 // 想查询完后执行下面的代码
显示数据foodArray });
}
里面显示数据的foodArray方法放到获取数据的地方function zoonFoodPeriod_callback() {
if (ajax_req.readyState == 4)
{
if (ajax_req.status == 200) {
var foodArray = ajax_req.responseText.split(";"); //获取foodArray
//获取到数据后显示
//dosth
} else {
alert("HTTP error " + ajax_req.status + ": " + ajax_req.statusText);
}
}
}
function init()
{
dojo.connect(zoonMapstationGraphicLayer,
"onMouseOver",
function(evt) {
var attr = evt.graphic.attributes; requestZoonFoodPeriodData(attr.mainCrop1,attr.mainCrop2, attr.mainCrop3); //查询数据库操作 document.getElementById("xxx").innerHTML = foodArray; });
}
红色的地方放到function zoonFoodPeriod_callback() {
if (ajax_req.readyState == 4)
{
if (ajax_req.status == 200) {
var foodArray = ajax_req.responseText.split(";"); //获取foodArray
document.getElementById("xxx").innerHTML = foodArray;
} else {
alert("HTTP error " + ajax_req.status + ": " + ajax_req.statusText);
}
}
}
上面红色的地方
你理解异步和同步的区别
ajax_req.open("POST", url, true); //异步
//function requestZoonFoodPeriodData()
{
if (window.XMLHttpRequest) {
ajax_ZoonFoodPeriodreq = new XMLHttpRequest(); // 创建XMLHttpRequest对象,准备向服务器发送请求并获取数据
} else if (window.ActiveXObject) {
try {
ajax_ZoonFoodPeriodreq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e1) {
try {
ajax_ZoonFoodPeriodreq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
ajax_ZoonFoodPeriodreq = false;
}
}
}
date = zoonGetDateTime();
year = zoonGetYearTime(); if (ajax_ZoonFoodPeriodreq != false) {
var url = "ZoonFoodPeriodAjaxListen?arg0=0&mainCrop1="
+ encodeURI(encodeURI(mainCrop1)) + "&mainCrop2="
+ encodeURI(encodeURI(mainCrop2)) + "&mainCrop3="
+ encodeURI(encodeURI(mainCrop3)) + "&dateTime=" + date
+ "&year=" + year;
ajax_ZoonFoodPeriodreq.open("POST", url, false);// 同步方式
ajax_ZoonFoodPeriodreq.onreadystatechange = zoonFoodPeriod_callback; // 同步方式的回调函数也是用onreadystatechange吗?
ajax_ZoonFoodPeriodreq.send(null);
}
}
function requestZoonFoodPeriodData(mainCrop1,mainCrop2,mainCrop3)
//function requestZoonFoodPeriodData()
{
if (window.XMLHttpRequest) {
ajax_ZoonFoodPeriodreq = new XMLHttpRequest(); // 创建XMLHttpRequest对象,准备向服务器发送请求并获取数据
} else if (window.ActiveXObject) {
try {
ajax_ZoonFoodPeriodreq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e1) {
try {
ajax_ZoonFoodPeriodreq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
ajax_ZoonFoodPeriodreq = false;
}
}
}
date = zoonGetDateTime();
year = zoonGetYearTime(); if (ajax_ZoonFoodPeriodreq != false) {
var url = "ZoonFoodPeriodAjaxListen?arg0=0&mainCrop1="
+ encodeURI(encodeURI(mainCrop1)) + "&mainCrop2="
+ encodeURI(encodeURI(mainCrop2)) + "&mainCrop3="
+ encodeURI(encodeURI(mainCrop3)) + "&dateTime=" + date
+ "&year=" + year;
ajax_ZoonFoodPeriodreq.open("POST", url, false);// 同步方式
ajax_ZoonFoodPeriodreq.onreadystatechange = zoonFoodPeriod_callback;
ajax_ZoonFoodPeriodreq.send(null);
}
}function zoonFoodPeriod_callback() {
if (ajax_ZoonFoodPeriodreq.readyState == 4) // 从服务器返回的HTTP响应已经被完全接受
{
if (ajax_ZoonFoodPeriodreq.status == 200) { // 请求成功,服务器返回的HTTP响应代码为200
var foodArray = ajax_ZoonFoodPeriodreq.responseText.split(";");
get_ZoonFoodPeriodreq(foodArray);
} else {
alert("HTTP error " + ajax_ZoonFoodPeriodreq.status + ": " + ajax_ZoonFoodPeriodreq.statusText);
}
}
}
ajax_ZoonFoodPeriodreq.send(null);
var foodArray = ajax_ZoonFoodPeriodreq.responseText.split(";");
get_ZoonFoodPeriodreq(foodArray);
接着写
如果为同步执行时,可以在send完后,直接使用responseText或者responseXML属性,不需要添加onreadystatechange状态转换函数了。不过为同步时如果网速慢容易造成浏览器假死,用户体验不好参考
ajax对象常用属性,事件,方法大小写问题的总结
function zoonFoodPeriod_callback() {
if (ajax_req.readyState == 4)
{
if (ajax_req.status == 200) {
var foodArray = ajax_req.responseText.split(";"); //获取foodArray
//获取数据执行方法
} else {
alert("HTTP error " + ajax_req.status + ": " + ajax_req.statusText);
}
}
}
显示的主要直接在
if (ajax_req.status == 200) {
var foodArray = ajax_req.responseText.split(";"); //获取foodArray
//获取数据执行方法
}
在这个地方做处理不久 完了么?