我正在尝试使用Ajax获取HTML页面,然后通过它的ID拉出div,并将该DIV插入当前页面。因此,当前页面加载(通过Ajax)第二页,将div拉出Ajax响应并插入当前页面。但是我感到很茫然,除非响应是text / xml,否则我不能使用任何DOM函数......我可以吗?
答案 0 :(得分:10)
Jquery(或其他库??)基本上会为你做这一切。我强烈建议调查这个,而不是重新发明轮子。
对于查询,它可能会喜欢:
// Make a call to url, with data
$.ajax(
{ url: $url,
data: $data,
dataType: 'xml',
callback: function(returnData) {
// Jquery find <mytag attribute="foo">...</mytag> and store it in mydata
var mydata = $(returnData).find('mytag[attribute=foo]');
// Insert into current page to somewhere with class="after-me"
$('.after-me').html(mydata);
}
});
我的语法可能有误。但这里是文档:http://docs.jquery.com/Ajax/jQuery.ajax#options
答案 1 :(得分:1)
是的,你可以。 Here您将找到有关如何解析XML响应的资源。
如果要将其加载到已存在的DOM树(innerHTML
)中,您应该能够调用您习惯的标准DOM遍历函数。
答案 2 :(得分:1)
不要担心有效性,因为您使用javascript动态执行此操作,您可以使用您的响应数据填充隐藏元素的innerHTML,然后使用您希望的任何DOM / jQuery函数
答案 3 :(得分:0)
脚本标签将通过任何方法在任何浏览器上失败..所以要访问当前页面的dom,请在您当前请求的脚本文本上应用“eval”函数。
我的意思是,如果你有html:
<div id="content">some html</div>
你在服务器端得到了脚本文本,如
content.innerHTML = "foo";
在ajax响应中使用eval函数
function onXmlHttpAnswer()
{
if(xmlHttp.readyState==4 && xmlHttp.status==200)eval(xmlHttp.responseText);
}
答案 4 :(得分:0)
为了使用jQuery仅提取通过$ .load()加载的HTML文档的一部分,请执行以下操作:
$('#dynamic').load('content.html #desiredElement');
.load实际上将加载整个文档,但选择器将强制加载仅返回该文档的选定部分。
答案 5 :(得分:0)
试一试。这对我有用。
$.ajax({
url: 'http://www.example.com',
type: "GET",
crossDomain: true,
dataType: 'html',
success: function (responseHTMLData) {
$($(responseHTMLData).find('.yourClassName')).each(function() {
console.log($(this).attr('href'));
});
}
});
答案 6 :(得分:0)
$.ajax({
type: "POST",
url : "yourURL"
data : $("#yourFormID").serialize(),
async: true,
success : function(resp) {
// resp contains data in html form you want to find data in
// <span class="error">some Error</span>
var errorData = $(resp).find('span.error').text();
// errorData would have value "some Error"
}
});