Javascript ZF2 jQuery日期选择器不在ajax对话框中工作
我的zend framework 2 web应用程序上的某些操作通过对话框打开。我在处理使用ajax调用的操作时使用此方法:Javascript ZF2 jQuery日期选择器不在ajax对话框中工作,javascript,php,jquery,zend-framework2,Javascript,Php,Jquery,Zend Framework2,我的zend framework 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 =
/**
* 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
文件中也可以
但是,我想知道是否有更好的方法存在,比如在页面上重新加载js或者其他什么 是的,一种方法是将脚本添加到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);
});
}
});
事实证明,不需要在ajax.phtml视图上重新加载JS文件。我只是在jquery($.get)ajax调用的onready事件中再次调用initDatePickers()函数。现在,日期选择器在对话框本身中工作正常。如果问题是您的事件没有触发,因为元素是在您注册事件之后创建的,那么您可以使用
$(document)代码>而不是$('.date picker')。单击(函数(evt){…})代码>。