Хорошо, вот мой код, он хранится во внешнем js-файле и правильно включен в основной HTML-файл в разделе head.
$(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);
}
});
Как видите, я пытаюсь отобразитьfancybox, когда внутренний скрипт ("orderStatus.php") получает правильные данные.
Все работает нормально, если я не использую jQuery (пример: window.alert вместо fancybox), но когдаЯ пытаюсь использовать jQuery внутри этой функции, получаю странную ошибку.
Firebug говорит, что в строке есть ошибка $("#fancyAlertLink").fancybox().trigger('click');
Нет описания ошибки, просто "$ (")
Что я делаю неправильно ???
Извините. Я знаю, что это не ответ, но я не могу все это прокомментировать. Вот "обновлено"Код: ошибка исчезла, но fancybox по-прежнему не будет запускаться из моего скрипта.
РЕДАКТИРОВАТЬ: Триггер не работает, когда находится внутри функции успеха.это работает. Проблема в том, что я действительно нуждаюсь в успехе. Я пытался переместить триггерный вызов в отдельном файле.unction и вызов функции из успеха, но тот же результат.Не работает!Любые предложения?
подтверждение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="confirmationDaemon.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>
Setинтервалы и AJAX работают как положено.Fancybox отображается, когда я нажимаю на ссылку «Показать Fancy».Но это не срабатывает от внешнего JS.Я отладил это.Должно работать, выполняет эту строку, но ничего не появляется