关于ajax请求等待完成
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于ajax请求等待完成相关的知识,希望对你有一定的参考价值。
象163邮箱,在发送邮件时,如果附件还没上传完成,会等待附件上传完成后再发送。这个是怎么实现得,给个思路~
可以使用同步请求,等待ajax请求完成返回数据后在执行其他操作。例子 JQuery ajax
$.ajax(
type: "post", //get或post请求
url: "UserAjax.ashx", //请求url
data: "type": "check", "uname": "admin","pwd":"admin" , //参数
async: false, //同步请求, true为异步,默认情况都是异步
success: function (data) //请求成功后执行
//操作...
,
error: function () //请求错误后执行
alert("服务器出错");
);
顺便写个 XMLHttpRequest 的readyState属性5种状态
0:未初始化
1:已打开
2:已发送
3:正在接收
4:已加载 参考技术A 回答这里有我做的一个绑定班级的一个下拉框,用jquery.ajax做的,你可以看看:
页面代码:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>$.Ajax</title>
<script src="../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function()
$("#btnAjax").click(function()
$.ajax(
beforeSen: function(XMLHttpRequest)
alert("开始向服务器发送请求!");
,
complete: function(XMLHttpRequest, textStatus)
alert("与服务器交互完成调用!");
,
sussess: function(data, textStatus)
alert("与服务器完成交互,请求成功时调用!");
,
error: function(XMLHttpRequest, textStatus, errorThrown)
alert("与服务器完成交互,请求失败时调用!"); ); ););
$(function()
$.ajax(
type: "post",
url: "Demo1Handler.ashx",
datatype: "JOSN",
timeout: 5000,
error: function() alert("Error loading data!") ,
success: function(data)
$("#msg").empty();
$.each(eval(data), function(i, item)
$("<option>" + item.ClassName + "</option>")
.attr("value", item.ClassID)
.appendTo($("#selClass"));
);
);
);
</script>
</head>
<body>
<input id="btnAjax" type="button" value="获取 Ajax 请求状态" />
<div id="msg"></div>
班级:
<select id="selClass">
<option value="0">--请选择--</option>
</select>
</body>
</html>本回答被提问者采纳 参考技术B ajax的请求非为4个过程的,你使用的是框架呢还是基本的js呢,基本的js的话就麻烦点
离开页面时 Ajax 请求是不是仍然完成?
【中文标题】离开页面时 Ajax 请求是不是仍然完成?【英文标题】:Do Ajax requests still finish when leaving the page?离开页面时 Ajax 请求是否仍然完成? 【发布时间】:2013-05-07 06:35:08 【问题描述】:我有一个需要运行一些 PHP 的情况,特别是我需要发送一个 SOAP 请求并等待响应,然后对此进行处理,但是有时这些请求可能很慢并且最多需要 9秒。
现在我真的不希望用户坐在那里等待 9 秒以完成此操作。
基本上用户流是..
用户进入支付页面 用户点击按钮通过支付网关(Paypal)支付 然后用户返回到站点(SOAP 请求以及在此阶段需要完成的所有工作)我曾考虑使用 Paypal IPN 通知来运行它,但后来认为在用户返回网站时它不会完成。
所以,我想知道我是否可以在用户通过 Ajax 访问第一页时发出呼叫,并在用户提交付款时运行它,并且在他们返回网站时应该完成 - - 如果他们最终没有完成付款,这没什么大不了的,所以我不担心在确认付款之前运行此代码。
我的问题是,如果我将其关闭以通过 AJAX 运行,如果用户在页面完成之前离开页面,代码是否仍会执行?如果没有,有什么想法吗?
【问题讨论】:
在 ajax 完成之前不要将它们发送到贝宝。 这样您就可以确认ajax请求已成功发送和接收,没有任何问题。另外,假设您正在发送 Ajax 请求并同时将它们发送到贝宝;您不希望 ajax 请求不发送(因为竞争条件) @kennypu 我不会同时这样做。一旦他们进入支付页面,该功能就会运行,然后他们就可以点击支付按钮。 :) 在这种情况下,您不必担心任何事情,特别是如果您没有从 ajax 请求返回任何内容,而只是发送了一些内容。 【参考方案1】:一旦请求发送到服务器,无论您是否离开页面,请求的服务器端都会完成。
唯一不会发生的是客户端回调方法的执行。
【讨论】:
好的,没什么需要发回给客户端的,所以我猜应该是安全的:)【参考方案2】:如果您使用 php ,则有一个 php.ini 设置 ignore_user_abort
告诉 php 当客户端中止请求时该做什么。
默认值为 false。
http://www.php.net/manual/en/misc.configuration.php#ini.ignore-user-abort
【讨论】:
以上是关于关于ajax请求等待完成的主要内容,如果未能解决你的问题,请参考以下文章
有没有方法可以使得前一个ajax请求没有处理完毕前,下一个ajax请求先等待?
ajax 介绍,ajax的请求通过js中的 xmlHttpRequest对象完成