我的zend框架2 Web应用程序上的一些操作通过对话框打开。我在处理使用ajax:
调用的动作时使用此方法/**
* Display content only on ajax call.
* @param \Zend\Mvc\MvcEvent $e
*/
public function onDispatch(\Zend\Mvc\MvcEvent $e)
{
$app = $e->getParam('application');
$layout = $app->getMvcEvent()->getViewModel();
if($app->getRequest()->isXmlHttpRequest()) {
$controller = $e->getTarget();
$controller->layout('application/ajax/ajax');
$layout->setTerminal(true);
}
}
问题是jquery的日期时间选择器似乎不起作用。因为此HTML会动态添加到页面中。
我认为解决方案可能是修改此onDispatch
方法,因此它还会重新包含一些JS文件。或者,还有更好的方法?我只是认为将硬编码的JS文件添加到我的ajax.phtml
文件中也可以。
但是,我想再次知道是否存在更好的方法,比如重新加载页面上的j或其他东西。
答案 0 :(得分:0)
是的,一种方法是将脚本添加到ajax.phtml中。
我之前做过的事情是将所需的脚本作为响应头发送:
$requiredScripts = array(
'/some/js/file.js',
'/another/js/file.js'
);
$this->getResponse()->getHeaders()
->addHeaderLine('x-scripts: ' . json_encode($requiredScripts));
然后在你的js:
// globally listen for the ajax-requests
$(document).ajaxSuccess(function(res, status, xhr) {
var requiredScripts = xhr.getResponseHeader("x-scripts");
if (requiredScripts) {
jQuery.each(requiredScripts, function(index, scriptSrc) {
jQuery.getScript(scriptSrc);
});
}
});