我正在尝试使用ajax html响应中的内容更新div。我相信我的语法正确,但div内容被替换为整个HTML页面响应,而不仅仅是在html响应中选择的div。我做错了什么?
<script>
$('#submitform').click(function() {
$.ajax({
url: "getinfo.asp",
data: {
txtsearch: $('#appendedInputButton').val()
},
type: "GET",
dataType : "html",
success: function( data ) {
$('#showresults').replaceWith($('#showresults').html(data));
},
error: function( xhr, status ) {
alert( "Sorry, there was a problem!" );
},
complete: function( xhr, status ) {
//$('#showresults').slideDown('slow')
}
});
});
</script>
答案 0 :(得分:67)
您正在设置#showresults
的{{1}}的html,然后将其替换为自身,这没有多大意义?
我猜你在哪里真正试图在返回的数据中找到data
,然后使用来自ajax调用的html更新DOM中的#showresults
元素:
#showresults
答案 1 :(得分:2)
差不多5年后,我认为我的回答可以减少许多人的辛勤工作。
使用来自ajax调用的HTML中的HTML更新DOM 中的元素可以通过这种方式实现
$('#submitform').click(function() {
$.ajax({
url: "getinfo.asp",
data: {
txtsearch: $('#appendedInputButton').val()
},
type: "GET",
dataType : "html",
success: function (data){
$('#showresults').html($('#showresults',data).html());
// similar to $(data).find('#showresults')
},
});
或replaceWith()
// codes
success: function (data){
$('#showresults').replaceWith($('#showresults',data));
},
答案 2 :(得分:1)
也可以使用jQuery的.load()
$('#submitform').click(function() {
$('#showresults').load('getinfo.asp #showresults', {
txtsearch: $('#appendedInputButton').val()
}, function() {
// alert('Load was performed.')
// $('#showresults').slideDown('slow')
});
});
与$ .get()不同,允许我们指定要插入的远程文档的一部分。这是通过url参数的特殊语法实现的。如果字符串中包含一个或多个空格字符,则第一个空格后面的字符串部分将被假定为jQuery选择器,用于确定要加载的内容。
我们可以修改上面的示例,只使用提取的文档的一部分:
$( "#result" ).load( "ajax/test.html #container" );
当此方法执行时,它会检索ajax / test.html的内容,但随后jQuery会解析返回的文档以查找ID为container的元素。此元素及其内容将插入到具有结果ID的元素中,并且将丢弃检索到的文档的其余部分。