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();
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();
...全文
相关推荐
禁用屏幕保护程序和自动挂起_JavaScript_下载.zip
禁用屏幕保护程序和自动挂起_JavaScript_下载.zip
ajax取消挂起请求的处理方法
ajax取消挂起请求的处理方法,需要的朋友可以参考一下
在Node.js中用法Javascript Generators详解_.docx
在Node.js中用法Javascript Generators详解_.docx
Domino服务器死机及挂起的数据收集步骤.doc
Domino服务器死机及挂起的数据收集步骤.docDomino服务器死机及挂起的数据收集步骤.docDomino服务器死机及挂起的数据收集步骤.doc
JavaScript是否可实现多线程 深入理解JavaScript定时机制
容易欺骗别人感情的JavaScript定时器 JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不少人都深有同感, 例如 代码如下: setTimeout( function(){ alert(‘你好!’); } , 0); setInterval( callbackFunction , 100); 认为setTimeout中的问候方法会立即被执行,因为这并不是凭空而说,而是JavaScript API文档明确定义第二个参数意义为隔多少毫秒后,回调方法就会被执行. 这里设成0毫秒,理所当然


Web 开发
