如何将.ajax()responseText设置为变量

时间:2011-01-15 01:17:11

标签: jquery html ajax dom document

我的问题是如何获取一个页面的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文档。

4 个答案:

答案 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时,检查documentationXMLHttpRequest返回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