如何向服务器发出请求并释放JavaScript以继续处理
How to do a request to the server and liberate JavaScript to continue processing
是否有一种方法可以发出请求并释放JavaScript和HTML来做它们自己的事情,让服务器做它自己的事情直到它完成,此时事件会控制JavaScript,将数据转储到指定的接收端并结束调用?
我用这个方法调用Python
function par_makeHttpObject() {
try {
return new XMLHttpRequest();
}
catch (error) {}
try {
return new ActiveXObject("Msxml2.XMLHTTP");
}
catch (error) {}
try {
return new ActiveXObject("Microsoft.XMLHTTP");
}
catch (error) {}
throw new Error("Could not create HTTP request object.");
}
我这样称呼它:
...
var request = par_makeHttpObject();
request.open("POST", "../getFdList?Fds=allFds", false);
request.send();
var dta = request.responseText.split("'n");
var cnt = 0;
for (var x in dta) {
try {eval(dta[x]);}
catch (error) {alert("JS Error - check JS part of syntax!'n" + dta[x]);}
}
...
问题是JavaScript坐着等待对请求的回复,而用户可能正在做其他事情。有些电话需要5分钟。。。
任何想法都将不胜感激。
DK
使用jQuery的ajax()
函数,而不是滚动自己的AJAX解决方案。ajax()
默认为异步请求,因此您可以向它传递一个在请求完成时调用的函数:
$.ajax({
type: "POST",
url: "../getFdList?Fds=allFds"
}).done(function( msg ) {
alert( "Response: " + msg );
});
这样,你就可以调用ajax()
,给它一个回调函数,并继续进行你需要做的任何其他处理
jQuery的另一个优点是,它可以很好地跨浏览器,无需任何努力。
是的,事实上这很容易。将打开调用中的最后一个参数更改为"true":(我从w3schools那里得到了这个(是的,我知道这些网站的不良代表,这只是一个例子)
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//THIS IS WHERE YOU GET THE SERVER RESPONSE
var response = xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
}
AJAX最棒的部分是能够在异步发出HTTP请求的同时继续处理其他事情。
$.post('../getFdList?Fds=allFds', {}, function(response) {
var dta = response.split("'n");
// ...
}, 'text');
// continue doing something else here
另请参阅:$.post()
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 在拖动过程中释放鼠标时忽略 JavaScript mouseUp 事件
- Javascript自动释放资源(如RAII)
- Firefox High Memory (RAM) 使用,如何使用 JavaScript 释放
- 通过使用JavaScript“未定义”(变量),我们可以释放系统内存
- 在 Javascript 中,递归函数一旦达到基本情况并开始向下移动堆栈,就会释放它的资源
- 如何在Javascript中释放上一个堆栈帧的内存
- 在JavaScript中释放密钥时,如何停止声音
- 如何向服务器发出请求并释放JavaScript以继续处理
- 如何正确释放JavaScript变量的内存
- 如何在JavaScript中释放内存
- 如何在javascript中释放closure's内存
- 垃圾收集 - Javascript - 释放一个记忆函数
- 释放JavaScript事件处理程序
- 当关联的Javascript对象在V8中被垃圾回收时,如何释放封装的C++对象