【发布时间】:2013-05-15 16:22:17
【问题描述】:
我正在使用 jQuery 的 AJAX 从服务器获取新内容。数据以 JSON 格式加载:
$.ajax({
url: url,
data: {
'ajax': '1',
},
dataType: 'json',
success: somefunction
});
由于服务器端应用程序限制,我无法在内部设置更多 JSON 变量,因此我必须将所有内容加载到内容中。这就是为什么我必须将结果加载到 jQuery 中,而不是搜索和替换页面上的某些元素,例如(在 somefunction 中使用):
var somefunction = function(data) {
var con = $('<div></div>').html(data.content); // just $(data.content) is not working
$('div#mainContent').html(con.find('div#ajax-content').html());
... // same process with three more divs
}
编辑:请注意,我必须执行相同的过程来替换三个 div!
还有更多相关内容,但作为示例,我希望这已经足够了。我的问题:对于某种逻辑方式,我希望将结果加载到 DOM ($(data.content))、解析为 html (con.find('dix#ajax-content').html()) 并返回到 DOM ($('div#mainContent').html()) 在我看来就像失去一些资源并降低性能所以我想知道是否有更快的方法来直接加载 DOM,例如:
$('div#mainContent').dom(con.find('div#ajax-content').dom());
我试图用谷歌搜索它,但也许我不知道该输入什么。此外,jQuery 文档对我没有多大帮助。
一些事实:
- jQuery 1.9.1
- jQuery UI 1.10.3 可用
最后,我知道使用服务器端应用程序来提供更多 JSON 变量会更好,但是,我需要编写不太容易的代码,这需要更长的时间来开发我现在没有。目前在客户端执行此操作将是临时解决方案,但是,我不想大幅降低性能。
附带问题:
在这种情况下使用find()函数是正确的还是有更好的?
EDIT 2(无法解析字符串) 我期待这个工作,但它不是:
content = '<div id="ajax-title">Pečivo běžné, sladké, slané</div>
<div id="ajax-whereami"><a href="/category/4">Chléba a pečivo</a> » Pečivo běžné, sladké, slané</div>';
$(content);
【问题讨论】:
-
试试 data.content.toString()
-
@BASarat 我假设 data.content 是一个字符串。
-
@BASarat 比我无法解析它并在请求中找到特定 div 的内容。
data.content无论如何都是字符串。它对标记为“不起作用”的行没有帮助。 -
@tomis 如果所有东西都需要替换 $('div#mainContent') 中的元素而不是你应该缓存它: $content=$('div#mainContent'); $content.find("something").replaceWith(con.find("somethingElse");
标签: javascript ajax jquery dom