如何制作jQuery插件并递归调用它?
如何递归调用jQuery插件? 我在main.php中有一个名为如何制作jQuery插件并递归调用它?,jquery,plugins,Jquery,Plugins,如何递归调用jQuery插件? 我在main.php中有一个名为poll.js的文件。我制作了一个名为poll的插件,调用order\u provider.php来捕获登录商店的新订单轮询功能应每15秒检查一次是否注册了新订单。我需要递归调用poll。 我制作了如下插件: (function($){ $.fn.poll = function (shopid){ $.getJSON("order_provider.php?looking=all&shopid=
poll.js
的文件。我制作了一个名为poll
的插件,调用order\u provider.php
来捕获登录商店的新订单<代码>轮询功能应每15秒检查一次是否注册了新订单。我需要递归调用poll
。
我制作了如下插件:
(function($){
$.fn.poll = function (shopid){
$.getJSON("order_provider.php?looking=all&shopid="+shopid, function(data){
// Do Something
}).done(function(){
// Do Something
setTimeout(poll(shopid),15000)
})
}
})(jQuery);
但除了一次,它不起作用 这是因为
setTimeout
只工作一次,请尝试setInterval
。
给你
所以我觉得应该是这样的,我还没有测试过。。但也许可以给你一个开始或如何使工作的想法
//the shop id it is to check if the users is login...
// this ajax call is used for gettings new items for that client
//set the php value for a hidden field
$(document).ready(function(){
/*
(function($) {
var shopid = document.getElementById("userid").value;
$.fn.poll = function(shopid) {
$.getJSON("order_provider.php?looking=all&shopid=" + shopid, function(data) {}).done(function() {
var shopinterval = setInterval(function(shopid) {
$(this).poll(shopid);
}, 15E3);
}).fail(function(shopid) {
errorhandler(shopid);
});
}
$.fn.errorhandler = function(shopid) {
clearInterval(shopinterval);
//try again
console.log("error");
poll(shopid);
}
})(jQuery);
*/
var shopid = document.getElementById("userid").value;
if(shopid != null || shopid != null || shopid != undefined){
setInterval(function(shopid){
poll(shopid);
}, 15E3);
}
function poll(userId){
$.getJSON("order_provider.php?looking=all&shopid=" + shopid, function(data) {}).done(function() {
var shopinterval = setInterval(function(shopid) {
$(this).poll(shopid);
}, 15E3);
}).fail(function(shopid) {
errorhandler(shopid);
});
}
function errorHandler(userId){
var confirmation=confirm("Press a button");
if (confirmation==true){
clearInterval(shopinterval);
poll(shopid);
}else{
console.log("error");
}
}
});
注意我不确定它是否符合您的意思,但请尝试一下,这也是基于php代码的,因为它正在输出用户id,所以它不是从php调用javascript(糟糕的做法),而是一个输入
字段,隐藏了我们需要的值。。。我希望它能对你有更多的帮助。。
附言我只是在火车上做的,所以我不知道它是否能开箱即用……;) 实施过程中几乎没有问题
(function ($) {
$.fn.poll = function (shopid) {
function poll() {
$.getJSON("order_provider.php?looking=all&shopid=" + shopid, function (data) {
// Do Something
}).done(function () {
// Do Something
setTimeout(poll, 15000)
})
}
poll();
}
})(jQuery);
注意:不想让它成为一个完整的插件。。。只是修复了现有版本中的一些问题我尝试了这段代码,但没有成功,我不知道“shopid”去了哪里?!我需要每隔15秒打一次“shopid”的“poll”!我使用了您的代码并对其进行了测试,但没有找到调用poll函数的方法。此代码导致错误->引用错误:未定义轮询@Saeid My bad,看起来像
$。getJSON
与fail
一起处理错误。我们应该在setInterval func中调用poll作为$(this)。poll(shopid)但shopid作为未定义发送!:(@Saeid这是因为它已经被使用过了,我认为最好在它发送ajax调用的同时使用setInterval
。有意义吗?我想我不明白你的意思,但如果我明白了,我应该在ajax完成时调用poll函数,而不是在短时间内!