返回给Symfony的Ajax数据是否包含当前jQuery/DOM识别的数据?

返回给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

我试图让jQuery识别返回的ajax数据。我能够在页面加载时通过在div标记之间加载内容与jQuery交互,如下所示:

<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逻辑?