Mar*_*ano 6 javascript ajax jquery
我有一个涉及实时通知的项目.所以我偶然发现使用socket io但我还没有足够的时间来学习它.所以我尝试用AJAX和jQuery来做.下面是我的代码结构,我想知道这是否会没有缺点?
setInterval(function(){
if( !element.hasClass('processing') ){
element.addClass('processing');
$.ajax({
type: 'post',
dataType: 'json',
url: ajaxurl,
data: {},
success: function( response ){
/* Success! */
element.removeClass('processing');
}
});
}
}, 2500);
Run Code Online (Sandbox Code Playgroud)
Ter*_*e00 10
你描述的方式将起作用.根据经验,我想指出一些事情.
我通常做一个递归函数,允许你等待ajax调用之间的间隔而不是固定速率.//可选但是给服务器一些呼吸室.
使用带有isActive标志的window.setTimeout().//允许您停止投票,无论原因是什么,并且因为如果需要,功能会再次启动
为了彻底清醒,我发现处理$ .ajax()帖子的错误情况总是一个好主意.您可能会显示一些消息,告诉用户他不再连接到互联网等.
一些示例代码:
var isActive = true;
$().ready(function () {
//EITHER USE A GLOBAL VAR OR PLACE VAR IN HIDDEN FIELD
//IF FOR WHATEVER REASON YOU WANT TO STOP POLLING
pollServer();
});
function pollServer()
{
if (isActive)
{
window.setTimeout(function () {
$.ajax({
url: "...",
type: "POST",
success: function (result) {
//SUCCESS LOGIC
pollServer();
},
error: function () {
//ERROR HANDLING
pollServer();
}});
}, 2500);
}
}
Run Code Online (Sandbox Code Playgroud)
这只是我使用你使用的确切方法获取的一些东西,似乎Web套接字可能是更好的选择,我将在不久的将来深入研究它.
归档时间: |
|
查看次数: |
12050 次 |
最近记录: |