Php 如何将Javascript文件链接到Zend中的模型文件夹
好的,我得到了这个Javascript文件,很简单:Php 如何将Javascript文件链接到Zend中的模型文件夹,php,javascript,zend-framework,Php,Javascript,Zend Framework,好的,我得到了这个Javascript文件,很简单: $(document).ready(function() { $('.status').prepend("<div class='score_this'>(<a href='#'>score this item</a>)</div>"); $('.score_this').click(function(){ $(this).slideUp(); r
$(document).ready(function() {
$('.status').prepend("<div class='score_this'>(<a href='#'>score this item</a>)</div>");
$('.score_this').click(function(){
$(this).slideUp();
return false;
});
$('.score a').click(function() {
$(this).parent().parent().parent().addClass('scored');
$.get("/js/Rating.php" + $(this).attr("href") +"&update=true", {}, function(data){
$('.scored').fadeOut("normal",function() {
$(this).html(data);
$(this).fadeIn();
$(this).removeClass('scored');
});
});
return false;
});
});
$(文档).ready(函数(){
$('.status')。前缀(“()”);
$('.score_this')。单击(函数(){
$(this.slideUp();
返回false;
});
$('.score a')。单击(函数(){
$(this.parent().parent().parent().addClass('scored');
$.get(“/js/Rating.php”+$(this.attr(“href”)+“&update=true”,{},函数(数据){
$('.scored').fadeOut(“正常”,函数(){
$(this).html(数据);
$(this.fadeIn();
$(this.removeClass('scored');
});
});
返回false;
});
});
当它显示
/js/Rating.php
时,该文件位于应用程序/模块/配方/模型中
/Rating.php,这是因为它包含一些无法在应用程序外部通过控制器访问的Zend逻辑。。这是唯一合理的方法
记住JavaScript是在客户端执行的,而不是在服务器端。您将模型放置在可公开访问的webroot之外,因为您的用户应该通过应用程序的FrontController而不是直接在模型上访问您的MVC应用程序(例如,评级模型中的域逻辑)
换句话说,由于.get()
发出了一个Ajax请求,因此您应该将该请求定向到应用程序中的Ratings controller,并使Ratings controller调用应用程序中的相应模型。模型将某些内容返回给控制器,然后控制器将此结果返回给客户端
例如:
$.get("/rating/update/someParamId/someParamValue");
这假定您使用的是默认的重写规则。然后在控制器中执行
$this->getRequest()->getParam('someParamId')
,它将包含'someParamValue'。控制器会将通常由操作呈现的ViewScript返回给客户端,因此您可能希望禁用布局以仅返回HTML片段。因此,如果我有一个分级控制器,我将如何更改javascript以重定向到这个完整url?是的,您现在做得不对。我假设你有一个Gordon提到的收视率控制器,你可能会把这个动作称为update,然后你的URL应该是/Ratings/update。这应该可以解决问题,但我无法帮助编写实际代码:)我同意这个答案。例如,您可以创建一个分级控制器,并像通过JS的简单页面一样获得它,但参数使用POST方法传递,这实际上并不重要。另外,在理想情况下,从脚本获取JSON响应以检查错误等。好的,我理解通过mvc结构工作,但是将脚本破解到这个模型中可能非常困难。另外,我认为在这个项目中,ajax知识的水平有点超出我的理解范围。