Jquery 如何更新zf2视图
我想知道如何在zend framework 2中更新视图。我想我可以这样做,只要第二次调用构建视图的动作。但它似乎不起作用 故事是这样的,我显示了一个表(仅供参考,这是一个计划),当人们点击“下个月”/“上个月”等链接时,我想在这个表中插入一些元素,所以我想,“嘿,我可能会再次调用我的操作,有一个参数,这样做我甚至会避免重建整个表,我只会从我的数据库中得到“下个月”“/”上个月“信息”。 但是代码的行为很奇怪,第一次访问页面时,表本身构造正确,但是当我尝试单击“nextmonth”/etc链接时,视图不会自动更新。 但是,再次使用JS函数success,我可以看到操作被正确调用,并返回正确的更新视图,该视图应该被显示……但没有显示,它仍然是原始视图 一些代码可以帮助您理解: 创建视图的操作包括:Jquery 如何更新zf2视图,jquery,zend-framework2,Jquery,Zend Framework2,我想知道如何在zend framework 2中更新视图。我想我可以这样做,只要第二次调用构建视图的动作。但它似乎不起作用 故事是这样的,我显示了一个表(仅供参考,这是一个计划),当人们点击“下个月”/“上个月”等链接时,我想在这个表中插入一些元素,所以我想,“嘿,我可能会再次调用我的操作,有一个参数,这样做我甚至会避免重建整个表,我只会从我的数据库中得到“下个月”“/”上个月“信息”。 但是代码的行为很奇怪,第一次访问页面时,表本身构造正确,但是当我尝试单击“nextmonth”/etc链接时
public function projectAction( )
{
$mod=$_POST['mod'] ;
if ( $mod == NULL )
{
//create and populate $tableRes
}
else // mod != NULL
{
echo "fooooooooooooo, I'm a test !!!" ;
//modify $tableRes using mod value
}
$viewModel = new ViewModel(array(
'projectTable' => $tableRes ,
)
) ;
$viewModel->setTerminal(true);
return $viewModel ;
}
观点:
public function projectAction( )
{
$mod=$_POST['mod'] ;
if ( $mod == NULL )
{
//create and populate $tableRes
}
else // mod != NULL
{
echo "fooooooooooooo, I'm a test !!!" ;
//modify $tableRes using mod value
}
$viewModel = new ViewModel(array(
'projectTable' => $tableRes ,
)
) ;
$viewModel->setTerminal(true);
return $viewModel ;
}
<?php echo $this->headScript()->prependFile($this->basePath() . '/js/projet_b_JS/animation.js')
->prependFile($this->basepath() . '/js/projet_b_JS/projectListener.js')
?>
<table id="projectTable">
<caption> Tableau Projet </caption>
<?php
//print the projectTable/$tableRes table
?>
</table>
<a onClick='rigTable(-1)'> prev Month </a> <a onClick='rigTable(+1)'> next Month </a> <br />
<a onClick='rigTable(-12)'> prev Year </a> <a onClick='rigTable(12)' > next Year </a> <br />
表项目
上个月下个月
上一年下一年
AJAX调用:
//inside animation.js
function rigTable ( $mod )
{
$.ajax({ type : 'POST',
url : './application/project/project',
data : { mod : $mod } ,
success : function ( testReturn )
{
alert(testReturn) ;
},
error : function ()
{
alert("error from rigTable JS function <br />") ;
}
}) ;
}
//inside animation.js
功能表($mod)
{
$.ajax({type:'POST',
url:“/应用程序/项目/项目”,
数据:{mod:$mod},
成功:函数(testReturn)
{
警报(testReturn);
},
错误:函数()
{
警报(“来自rigTable JS函数的错误
”;
}
}) ;
}
因此,当我点击时,我会弹出一个警报,告诉我类似于:
fooooooooooooo, I'm a test !!!
//rest of the view code
呜呜,我是个测试!!!
//视图代码的其余部分
我搜索了refreshView()方法,但没有找到任何方法。我肯定是用了错误的方法,思考太多了,但我没有找到其他方法。如果您能提供任何帮助,我们将不胜感激,非常感谢您阅读这篇长文章
PS:我对zf2框架还是新手,我也不太习惯“MVC框架编程”。因此,如果这是一个愚蠢的问题,请原谅。首先,不要这样做:
$mod=$_POST['mod'] ;
如果要获取POST变量,请使用请求对象!
所以你会有
$mod=$this->getRequest()->getPost('mod');
对于你的错误,听起来很奇怪……我想这可能是你的$tableRes算法的问题。
尝试传递一个字符串以测试视图是否实际“刷新”
比如:
if($mod!=NULL){
$tableRes="blablabla";
}
else{
$tableRes=array().....
}
如果它确实打印表格而不是字符串,那么这可能会很复杂:p
编辑:嗯,我读得太快了。你想用AJAX刷新你的表吗?我建议你先尝试不使用AJAX(重新加载页面)
目前,您希望显示的Viewmodel对象“存储”在testReturn变量中。到目前为止,ZF2中没有使用AJAX,但我认为您做得不对:p。在internet上进行快速搜索,我将进入本教程。您可以在那里找到您的答案:
这是关于表单的,所以您的案例应该更简单;)好的,samsonik教程安慰我没有正确的刷新方法。所以我避开了这个问题。我觉得有点傻,因为我之前没有想到这个。。。 我刚刚将我的JS成功部分修改为:
success : function ( testReturn )
{
$('#project').html(testReturn) ;
},
很有魅力。但我可能仍然错过了一些东西,稍后我会仔细看看。我现在必须继续:/。
谢谢你给我的提示(对不起,我不能投票支持你,需要15个名声。)我已经尝试过类似if($mod==NULL)$tableRes=“teeeest" ; else$tableRes=NULL;但是视图也不会刷新。PS:我会尝试使用请求对象。好的,我会读这篇文章,然后回来告诉你我是否能让它工作。谢谢你的支持。