js中是否可以挂起???
我现在在修改一些页面。其中有一项需求就是在提交前需要从服务器取一些数据。我用了js从服务器去取数据,但我发现由于我去数据的函数是写在一个js文件里的从页面执行这个函数之后js没有等待返回值而直接往下走了,结果提交了叶面但数据在提交时还没有取到。我想问一下怎么才能让js挂起等待返回值呢?
js文件中的函数:
var http_request = false;
function send_request(url, date) {
http_request = false;
// mozilla
if(window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
}
// ie
else if (window.ActiveXObject) {
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
window.alert("can not creat XMLHttpRequest object");
return false;
}
http_request.onreadystatechange = processRequest;
//http_request.open("GET", url, true);
//http_request.send(null);
http_request.open("POST", url, true);
http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http_request.send("date=" + date.value);
}
// process function
function processRequest() {
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) {
//loadbody=http_request.responseText;
//responseXmlHandler(req.responseXML);
// success
loadready(http_request.responseXML);
} else {
alert("exception occured");
}
}
else
{
loadwait();
}
}
// do nothing
function loadwait() {
}
var gStartDay = "";
var gEndDay = "";
var gYear = "";
var gFiscalYear = "";
var gMonth = "";
var gWeek = "";
function loadready(cartXML) {
// get root
var cart = cartXML.getElementsByTagName("date");
for(var i=0;i<cart.length;i++) {
var date = cart[i];
gStartDay = date.getElementsByTagName("start")[0].firstChild.data;
gEndDay = date.getElementsByTagName("end")[0].firstChild.data;
document.all("dfdTeEffPhaseInDate") = gStartDay;
document.all("dfdTeEffPhaseOutDate") = gEndDay;
//gYear = date.getElementsByTagName("year")[0].firstChild.data;
//gFiscalYear = date.getElementsByTagName("fiscalYear")[0].firstChild.data;
//gMonth = date.getElementsByTagName("fiscalYear")[0].firstChild.data;
//gWeek = date.getElementsByTagName("week")[0].firstChild.data;
}
}
jsp叶面:
send_request("getDate.do", document.all("dfdTeStandardDate"));
document.forms[0].action = "teSalesForecastBudgetWeekQueryAction.do";
document.forms[0].submit();