Javascript cakephp2中的jquery函数

Javascript cakephp2中的jquery函数,javascript,jquery,cakephp-2.0,Javascript,Jquery,Cakephp 2.0,我对jquery和cakephp都是初学者。我试图在我的页面索引中运行jquery函数,但它不起作用。 此函数将另一个名为ticker的页面的ticker嵌套在我的主页索引中。 使用的cakephp路径类似于SessionModels/ticker.ctp和SessionModels/index.ctp 当我单独运行我的页面ticker.ctp时,它运行时不会出现显示ticker的问题,但是当我尝试使用index.ctp中的jquery函数将其嵌套在中时,它什么也不做。 这是我的javascri

我对jquery和cakephp都是初学者。我试图在我的页面索引中运行jquery函数,但它不起作用。 此函数将另一个名为ticker的页面的ticker嵌套在我的主页索引中。 使用的cakephp路径类似于SessionModels/ticker.ctp和SessionModels/index.ctp

当我单独运行我的页面
ticker.ctp
时,它运行时不会出现显示ticker的问题,但是当我尝试使用
index.ctp
中的jquery函数将其嵌套在
中时,它什么也不做。 这是我的javascript/jquery函数:

    <script type="text/javascript" > function ticker(){

    $.ajax ({
        type:'GET',
        url:'/SessionModels/ticker/',
        success:function(e){
            $('#ticker').html(e);
        },
        complete : function(e){
            setTimeout ("ticker()", 3000);
        }
    });

}

$(document).ready(function(){
ticker();
});</script>
这是我的ticker.ctp的内容

    <marquee >
<?php foreach ($sessions as $session): ?>
<span style="color:#333333; font-size:12px; font-weight:bolder; font-family:Arial; vertical-align: text-top;"><?php echo $session['Dictionnary']['ticker']; ?>
</span>
        <?php echo $session['SessionModel']['_open']; ?>
        <?php echo $session['SessionModel']['_close']; ?>

<?php endforeach; ?>
</marquee>
正如我所说的,它工作得非常完美,没有问题,但将ticker.ctp嵌套在index.ctp中是个问题。
感谢您的帮助

Http状态代码304“未修改”可能表示您的浏览器正在使用请求的缓存版本,而不是检索新数据。这可能是由服务器发送的“缓存”头造成的

ajax()有一个“缓存”选项,可以防止浏览器缓存ajax请求,并通过向每个请求添加随机时间戳来强制重新加载页面

将“cache”选项添加到.ajax选项中,并将其设置为“false”以使用它

function ticker(){
    $.ajax ({
        type:'GET',
        url:'/SessionModels/ticker/',
        cache:false,
        success:function(e){
            $('#ticker').html(e);
        },
        complete : function(e){
            setTimeout(ticker, 3000);
        }
    });
}
请阅读此处的文档

要检查ticker()函数是否正在实际运行,请尝试暂时将其更改为此

function ticker(){
    alert('tick');
    setTimeout(ticker, 3000);
}
我在我的情况下测试了这个,它可以正常工作,但是,您应该确保在此之前加载了jQuery。由于您在视图中使用了这段代码,因此您可能在之后加载jQuery(就在关闭
标记之前)

更好的选择是使用JsHelper的缓冲区,并在布局中输出缓冲脚本

/**
 * JsHelper will append this block to the $(document).ready()
 */
$script = "
        function ticker() {
            $.ajax ({
                type:'GET',
                url:'/timeline/qty_breakdown/',
                cache:false,
                success:function(e){
                    $('#ticker').html(e);
                },
                complete : function(e){
                    setTimeout (ticker, 3000);
                }
            });
        }

        ticker();
";

$this->Js->buffer($script);
然后,在布局内部(就在关闭标记之前):


这将自动将您的脚本包装在$(文档)中。就绪(…)

提供您的视图,您是否有超过1个id标记元素?如果您检查firebug或Chrome webinspector中的“网络”选项卡,您是否可以看到您的函数正在检索某些内容?确切地说,它什么也不检索,我有服务器代码304@Thajeztah您还可以提供股票代码操作的会话模型代码吗?也许你是在注入蛋糕的布局而不想这么做。@LuisTellez不,这只是一个元素而已!很遗憾,我不能在这里附加一个打印屏幕来显示我所拥有的。它仍然无法在@thaJeztah工作,我仍然有304个代码,并且没有XHR请求!!!如果您想查看,我已经对我的主要帖子做了一些更新:(您在控制台中看到错误了吗?另外,最好不要对setTimeout()使用字符串,尽管这可能不是问题所在(我将在回答中添加更多内容)。我已经用setTimeout修改了我的脚本(ticker,3000);我在代码的开头和结尾都发出了一些警告!虽然脚本显示在我的firebug中,但警告不起作用!!!我刚刚在浏览器中测试了这段代码,它在我的情况下正常工作。再次检查是否正在加载jQuery(以及是否在此脚本之前加载).检查firebug控制台,它是否显示错误?我添加了一个使用JsHelper的示例,它允许您在布局中输出脚本。
function ticker(){
    alert('tick');
    setTimeout(ticker, 3000);
}
/**
 * JsHelper will append this block to the $(document).ready()
 */
$script = "
        function ticker() {
            $.ajax ({
                type:'GET',
                url:'/timeline/qty_breakdown/',
                cache:false,
                success:function(e){
                    $('#ticker').html(e);
                },
                complete : function(e){
                    setTimeout (ticker, 3000);
                }
            });
        }

        ticker();
";

$this->Js->buffer($script);
echo $this->Js->writeBuffer();