有没有办法使一个AJAX请求具有多个响应?
例如,如果向服务器发出一个GET请求,这将花费很长时间进行计算,那么我如何让服务器偶尔发送回响应,从而给我一些有关进度的数据?
如果是这样,有人可以发布一个示例,最好是使用Jquery并说明服务器可以通过它执行的机制?
您可以使用2个ajax调用来实现此目的,一个调用运行该进程,第二个调用定期轮询进度:
在服务器端:
public class ProgressInfo
{
public int Percent {get;set;}
public bool Done {get;set;}
}
public JsonResult DoCalculation(string id)
{
ProgressInfo progress = new ProgressInfo();
if(!string.IsNullOrEmpty(id))
{
Session[id] = progress;
}
//periodicly update progress
progress.Percent++;
}
public JsonResult GetProgress(string id)
{
ProgressInfo progress;
if(string.IsNullOrEmpty(id)
|| (progress = Session[id] as ProgressInfo) == null)
{
return Json(new {
success = false
});
}
if(progress.done)
{
Session.Remove(id);
}
return Json(new {
success = true,
done = progress.done,
percent = progress.Percent
});
}
在客户端:
var progressID = Math.random();
function doCalculation() {
$.post('<%=Url.Action("DoCalcluation")%>/' + progressID);
setTimeout(pollProgress, 1000);
}
function pollProgress() {
$.post('<%=Url.Action("GetProgress")%>/' + progressID, function(response){
if(!response.success) {
alert('Cannot find progress');
return;
}
if(response.done) {
alert('Done!');
} else {
alert('Progress at ' + response.precent + '%');
setTimeout(pollProgress, 1000 /*1 second*/);
}
}, 'json');
}
问题内容: 这个问题已经在这里有了答案 : 如何从异步调用返回响应? (39个答案) 6年前关闭。 我使用原型进行AJAX开发,并使用如下代码: 而且我发现“结果”是一个空字符串。所以,我尝试了这个: 但这也没有用。如何获取responseText供其他方法使用? 问题答案: 请记住,在someFunction完成工作后很久才调用onComplete。您需要做的是将回调函数作为参数传递给somef
我在我的WinXP PC上运行apache2.2。我不希望任何人,只希望指定的IP访问该站点。我已经使用了httpd。conf拒绝其他请求。但这还不够,我现在想将apache设置为不发送响应,而不是403。简单地说,我想隐藏我的服务器,我不想让别人知道我正在运行一个web服务器。
页面跳转 操作完成后,成功或失败页面跳转可以使用 控制器基类的success,error方法: success方法 /** * 操作成功跳转的快捷方法 * @access protected * @param mixed $msg 提示信息 * @param string $url 跳转的URL地址 * @param mixe
页面跳转 操作完成后,成功或失败页面跳转可以使用 控制器基类的success,error方法: success方法 /** * 操作成功跳转的快捷方法 * @access protected * @param mixed $msg 提示信息 * @param string $url 跳转的URL地址 * @param mixe
问题内容: 我想在click事件中进行三个Ajax调用。每个ajax调用都会执行不同的操作,并返回最终回调所需的数据。调用本身并不相互依赖,它们可以同时进行,但是当三个都完成时,我希望有一个最终的回调。 问题答案: 这是我写的一个回调对象,您可以设置单个回调以在全部完成后触发,也可以让每个回调都有自己的回调并在全部完成后触发它们: 注意 从jQuery 1.5+开始,您可以按照另一个答案中所述使用
问题内容: 当我警告jsonServerResponse函数返回的值时,尽管从process.php页面返回了JSON,但其值未定义。 我知道问题是异步请求完成之前发出的警报功能,但是我不确定如何解决此问题。任何建议都非常感激:) 问题答案: 好的,我是从其他帖子中弄清楚的。结果可以在成功回调中处理,也可以添加本身是回调函数的参数并将ajax请求的结果应用于回调。 还有gdoron,您所询问的那一