我的问题是如何获取一个页面的HTML并将其存储在一个对象中,以后我可以使用jQuery方法通过id,name,class等来获取元素。
这是我到目前为止所做的:
$(document).ready(function(){
$('#button').click(function() {
var page = $.ajax({
type: 'GET',
url: 'Grabber.php',
data: {url:$('#url')},
dataType: "HTML",
success: function(data){
alert(data); //this alert displays the correct information
}
}).responseText;
alert(page); //this alert displays nothing
});
});
如何让“页面”变量起作用?甚至更好,我如何存储它,以便我可以像访问HTML文档一样访问它。到目前为止,我唯一的想法是作为DOM文档。
答案 0 :(得分:2)
$(document).ready(function(){
var page;
$('#button').click(function() {
$.ajax({
type: 'GET',
url: 'Grabber.php',
data: {url:$('#url')},
dataType: "HTML",
success: function(data){
populate(data);
}
});
function populate(a) {
page = a;
alert(page)
alert($(page).find('span').text())
}
});
});
在成功方法返回$.ajax
时,检查documentation,XMLHttpRequest
返回data, textStatus, XMLHttpRequest
。你需要的是data
要访问它,您可以执行以下操作:
$(page).find('span').text()
答案 1 :(得分:1)
data
仅在成功进行AJAX调用后才可用。因此,此成功函数之外的任何变量都未必设置:
$(document).ready(function(){
$('#button').click(function() {
$.ajax({
type: 'GET',
url: 'Grabber.php',
data: {url:$('#url')},
dataType: "HTML",
success: function(data) {
// keep working _within_ this function
// and call it "page" instead of "data" if you want
alert(data);
// and to find something within this data:
$(data).find('.some-class')... // etc
}
});
});
});
答案 2 :(得分:0)
在成功回调中,您应该在其本地范围之外分配一个变量,以便在函数结束时,数据不会丢失。然后,您可以将它作为第二个参数传递给jQuery方法,以使您的jQuery选择器作用于AJAX获取的文档而不是Document。
var a_nasty_global_variable_you_should_put_in_a_better_place;
// most of your code…
success: function(data){
a_nasty_global_variable_you_should_put_in_a_better_place = data;
}
// a little later…
$('#button', a_nasty_global_variable_you_should_put_in_a_better_place).addClass('is-awesome');
你得到了它的要点,不是吗?
答案 3 :(得分:0)
如果您希望该变量位于此ajax所在的同一页面,您可以使用全局变量
或强>
如果必须存储少量数据并在其他页面上使用responceText,则可以使用 Cookie 存储您的responseText 对于带有jquery HELP?
的cookie