返回给Symfony的Ajax数据是否包含当前jQuery/DOM识别的数据?
我试图让jQuery识别返回的ajax数据。我能够在页面加载时通过在div标记之间加载内容与jQuery交互,如下所示:返回给Symfony的Ajax数据是否包含当前jQuery/DOM识别的数据?,jquery,ajax,symfony1,Jquery,Ajax,Symfony1,我试图让jQuery识别返回的ajax数据。我能够在页面加载时通过在div标记之间加载内容与jQuery交互,如下所示: <div id="edit-features-id"> include_partial( 'user/favoritesEditFavorites', array('vrs_allfav_data' => $vrs_allfav_data) ); </div> 或者像这样: $j('#vrs_favorites_e
<div id="edit-features-id">
include_partial(
'user/favoritesEditFavorites',
array('vrs_allfav_data' => $vrs_allfav_data)
);
</div>
或者像这样:
$j('#vrs_favorites_edit').load(favoritesEditFavoritesURL);
$j.ajax({
url: favoritesEditFavoritesURL,
cache: false,
success: function(response) {
$j('#vrs_favorites_edit').html(response);
};
});
或者像这样:
$j('#vrs_favorites_edit').load(favoritesEditFavoritesURL);
$j.ajax({
url: favoritesEditFavoritesURL,
cache: false,
success: function(response) {
$j('#vrs_favorites_edit').html(response);
};
});
正如您所注意到的,它们都会转到favoritesEditFavoritesURL,这将转换为symfony 1.3.11路由“user/favoritesEditFavorites”,该路由调用此操作:
if ($request->isXmlHttpRequest())
{
// Retrieve data from db $vrs_allfav_data loaded into EditMode using renderPartial.
return $this->renderPartial(
'user/favoritesEditFavorites',
array('vrs_allfav_data' => $vrs_allfav_data)
);
}
这对于加载内容非常有效,但对于需要与jQuery交互才能允许单击和拖放功能的内容,则不适用
话虽如此,我还是找到了一个解决方案来解析jQuery click函数,允许它通过更改我的jQuery开始工作。关于以下代码:
$j('.cancelEditFavorites').on('click', function() {
为此:
$j(document).on('click', '.cancelEditFavorites', function() {
不幸的是,拖放aka sortable不起作用,它使用这个jquery插件和下面的代码进行嵌套排序:
$j("ol.vertical").sortable({
group: 'favorites',
handle: '.handle',
isValidTarget: function($item, container) {
if ($item.is(".link")) {
return true;
} else {
return $item.parent("ol")[0] == container.el[0];
}
},
onDragStart: function($item, container, _super) {
if ($item.is(".folder")) {
$j('ol.vertical ol').sortable('disable');
_super($item, container);
}
},
onDrop: function($item, container, _super) {
if ($item.is(".folder")) {
$j('ol.vertical ol').sortable('enable');
_super($item, container);
}
},
});
最后,我的问题是,有没有一种方法可以从ajax或dom可以识别的任何其他类型调用加载数据,从而允许它与jQuery交互,就像它在初始加载时一样,或者如果它是一个刷新的页面,那么会是这样
刷新浏览器是可行的,但会导致两个对话框消失,让最终用户思考刚才发生了什么,因为现在他们必须重新单击打开第一个对话框,重新打开第二个对话框,这对我来说不是一个好的用户体验。回答我自己的问题,它不起作用的原因是因为Ajax调用带来了jQuery无法使用的新数据,因为页面已经加载了,因此我在加载的新内容的按钮上添加了onclick,当被触发时,jQuery会识别这些按钮,从而解决了我的问题。很清楚,您有一个用户可以使用的“查看模式”页面单击某个地方进行编辑,会弹出一个对话框,即页面的“编辑模式”版本?另外,“编辑模式”版本的对话框视图不支持javascript逻辑?