ajax通过get(post)请求来轮询在线支付状态-明生-凯发官网入口

ajax(avascript 和 xml)是一种用于创建快速动态网页的技术,通过后台与服务器进行少量数据交换,可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

比如说支付完成页面的跳转,就可以使用ajax监听网页上的支付状态,实现部分数据的更新和跳转。
最近接入支付宝时遇到ajax的这种用法,因为不太熟悉,写不出监听动作,这里特别写下笔记。

一、ajax()函数基本格式
$.ajax({
type: '', // 请求的方式,例如 get 或 post
url: '', // 请求的 url 地址
data: { },// 这次请求要携带的数据
success: function(res) { } // 请求成功之后的回调函数
})
ajax的用法有点复杂,在我看来是这样。
一个完整的ajax通常离不开三个参数:url(请求的资源地址)、data(请求资源期间要携带的参数)和callback(请求成功时的回调函数)。这三个参数贯穿了ajax的基本动作:从一个url处获取一个动态的参数,成功拿到这个参数后再做一个回调事件的处理。
涉及到参数传递,自然离不开通常的get和post方法,所以ajax传参也有两种基本方法。

二、主动发起get请求 查询book_id为168的图书记录是否存在。
$.ajax({
type: 'get', // 请求的方式
url: 'http://www.yoursite.com/api/book', // 请求的 url 地址
data: { book_id: 168 },// 这次请求要携带的数据
success: function(res) { // 请求成功之后的回调函数
console.log(res)
}
})
 

二、主动发起post请求 查询图名为'平凡的世界', author为 '路遥',publisher为 '北京十月文艺出版社的记录是否存在。
$.ajax({
type: 'post',
url: 'http://www.yoursite.com/api/book',//数据提交的url地址
data: { bookname: '平凡的世界', author: '路遥', publisher: '北京十月文艺出版社' },
success: function (res) {
console.log(res);
}
})
通过get和post的url请求,也就完成了一个异步监听的动作。
不过,一些复合式的ajax动作还是有点难理解,需要层层琢磨传参机制及函数方法的使用。
以下是一个支付宝监听实例,源代码中抽出来的,记录一下以方便学习。
(function($){
window.view={
query:function () {
$.ajax({
type: "post",
url: "'www.yoursite.com/inc/pay/query.php?out_trade_no='.$data['out_trade_no'] ?>",
timeout:6400,
cache:false,
datatype:'text',
success:function(e){//处理服务器返回的数据
if (e && e.indexof('complete')!==-1) {//判断一个字符串是否包含在另一个字符串中
location.href ="www.yoursite.com/pay";
return;
settimeout(function(){window.view.query();}, 2400);
},
error:function(){
settimeout(function(){window.view.query();}, 2400);
}
});
}
};
window.view.query();
})(jquery);
out_trade_no是一个外部订单号,query.php携带参数(out_trade_no)执行订单查询。
如果查询到订单已经支付完成,就执行支付页面的跳转。
这是一个有点美丽的ajax轮询监听实例,url带参数查询有点超越我的理解能力了。不过,还是先记一下,方便以后进一步学习。
发表评论
网站地图