jQuery ajax 调用返回特定的 HTML 元素
我尝试了这段代码:
$.post('/script', function(result) {
var foo = $(result).find('#foo');
$('#result').html(foo);
});
这是返回 html:
<div id='foo'>
Content.
</div>
<div id='new'>
New data
</div>
在警告变量 foo 后,它返回一个对象。然后html就变成空的了。我想打印一个特定的 html 块(仅#foo 而不是#new)。
来自 jQuery 文档:
$.post( url, { s: term } ,
function( data ) {
var content = $( data ).find( '#content' );
$( "#result" ).html( content );
}
);
这个(var content)也会导致对象并在 #result 上打印一个空字符串。
I tried this code:
$.post('/script', function(result) {
var foo = $(result).find('#foo');
$('#result').html(foo);
});
Here's the return html:
<div id='foo'>
Content.
</div>
<div id='new'>
New data
</div>
After alerting variable foo it returns an object. And the html becomes empty. I would like to print a specific html block (#foo only not #new).
From jQuery documentation:
$.post( url, { s: term } ,
function( data ) {
var content = $( data ).find( '#content' );
$( "#result" ).html( content );
}
);
This (var content) would also result to object and printing an empty string on #result.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
发生这种情况是因为
#foo
和#new
都位于顶层。.find()
方法查找后代。因此您需要将它们包装在服务器端(结果)或 jQuery 级别的另一个 div 中。将 html 更改为
因此,要么在 jquery 级别
或 如果您使用 HTML 解决方案,则可以使用可以加载页面片段的
.load
方法这将加载 id < 的元素code>foo 从
/script
页面并将其放入#result
元素中。This happens because both
#foo
and#new
are at the top level.The
.find()
method looks for descendants. so you will need to wrap them in another div either at the server-side (result) or the jQuery level.So either change html to
or at jquery level
If you use the HTML solutions you could however use the
.load
method which can load page fragmentsThis will load the element with id
foo
from the/script
page and put it in#result
element.foo 是一个对象... foo.html() 是你想要的,所以你必须改变:
$('#result').html(foo);
在
$('#result').html(foo.html());
foo is an object... foo.html() is what you want, so you've to change :
$('#result').html(foo);
in
$('#result').html(foo.html());