我现在在修改一些页面。其中有一项需求就是在提交前需要从服务器取一些数据。我用了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();