好吧,这是我的代码,它存储在一个外部js文件中,并正确地包含在head部分的主html中。
$(document).ready(function(){
var checkForConfirmation = function(){
for(var i=0; i<myOrders.length; i++){
$.ajax({
type: "GET",
url: "orderStatus.php",
data: {action: get , id: myOrders[i]},
success: function(data){
if (data){
var reply = jQuery.parseJSON(data);
$("#fancyAlertLink").fancybox().trigger( click );
myOrders.splice(myOrders[i], 1);
}
}
});
if (myorders.length == 0){
clearInterval(waitForRestourantInterval);
}
}
}
if (myOrders.length > 0){
var waitForRestourantInterval = setInterval(function(){checkForConfirmation()}, 5000);
}
});
正如您所看到的,当后端脚本(“orderStatus.php”)获得正确的数据时,我试图显示一个fancybox。
如果我不使用jQuery(例如:window.alert而不是fancybox),一切都很好,但当我试图在这个函数中使用jQuery时,我会得到一个奇怪的错误。
Firebug表示,在$(“#fancyAlertLink”).fancybox().trigger(点击)代码>
没有错误描述,只有“$(”
我做错了什么???
Sorry. I know this is not an answer, but I can t put it all in comment. Here is the "updated" code. Error is gone now, but fancybox still will not trigger from my script.
编辑:在成功函数内部时,触发器不起作用。我试着把它移到外面,效果很好。问题是我真的需要它才能成功。我试图在单独的函数中移动触发器调用,并从成功中调用该函数,但结果相同。不起作用!有什么建议吗?
确认Daemon.js
$(document).ready(function(){
var checkForConfirmation = function(){
for(var i=0; i<myOrders.length; i++){
$.ajax({
type: "GET",
url: "orderStatus.php",
data: {action: "get", id: myOrders[i]},
context: i,
success: function(data){
if(data!="null"){
var reply = jQuery.parseJSON(data);
$("#fancyAlertLink").trigger("click");
myOrders.splice(this, 1);
}
}
});
if (myOrders.length == 0){
clearInterval(waitForRestourantInterval);
}
}
}
if (myOrders.length>0){
var waitForRestourantInterval = setInterval(function(){checkForConfirmation()}, 5000);
}
});
主html文件:(smarty+html,smarty{literal}标记在本文中被忽略)
<html>
<head>
<script src="jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="fancyBox/jquery.fancybox-1.3.4.pack.js" type="text/javascript"></script>
<link rel="stylesheet" href="fancybox/jquery.fancybox-1.3.4.css" type="text/css" media="screen" />
<script type="text/javascript">
var myOrders = new Array();
{foreach from=$smarty.session.my_orders item=id}
myOrders.push({$id}):
{/foreach}
</script>
<script type="text/javascript">
$(document).ready(function{
$("#fancyAlertLink").fancybox();
});
</script>
<script src="确认Daemon.js" type="text/javascript"></script>
</head>
<body>
--- some content here ---
<a id="fancyAlertLink" href="#fancyAlert">Show fancy</a>
<div style="display:none">
<div id="fancyAlert">Fancybox hell yeah!!!</div>
</div>
</body>
</html>
按照预期设置间隔和AJAX工作。当我点击“显示幻想”链接时,幻想盒就会显示出来。但它不是由外部js触发的。我调试了它。它应该可以工作,它执行了那一行,但什么也没有出现