Javascript cakephp2中的jquery函数
我对jquery和cakephp都是初学者。我试图在我的页面索引中运行jquery函数,但它不起作用。 此函数将另一个名为ticker的页面的ticker嵌套在我的主页索引中。 使用的cakephp路径类似于SessionModels/ticker.ctp和SessionModels/index.ctp 当我单独运行我的页面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
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();