Как установить .ajax () responseText для переменной - PullRequest
1 голос
/ 15 января 2011

У меня вопрос, как я могу получить HTML-код одной страницы и сохранить его в объекте, который я смогу позже найти с помощью методов jQuery для получения элементов по id, имени, классу и т. Д.что у меня так далеко:

   $(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
     });
  });  

Как мне заставить эту переменную "page" работать?И еще лучше, как я могу сохранить это так, чтобы я мог получить к нему доступ, как если бы это был документ HTML.Пока моя единственная идея - это документ DOM.

Ответы [ 4 ]

2 голосов
/ 15 января 2011
$(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 возвращает XMLHttpRequest, а метод успеха возвращает data, textStatus, XMLHttpRequest. Что вам нужно здесь, это data
И для доступа к нему вы можете сделать что-то вроде:

$(page).find('span').text()
1 голос
/ 15 января 2011

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
          } 
        });
     });
});
0 голосов
/ 15 января 2011

Вы можете использовать глобальную переменную , если хотите, чтобы эта переменная находилась на той же странице, где присутствует этот ajax

или

ВыВы можете использовать куки для хранения вашего responseText, если вам нужно сохранить небольшой объем данных и использовать responseceText на других страницах для куки с jquery HELP?

0 голосов
/ 15 января 2011

В вашем успешном обратном вызове вы должны назначить переменную вне ее локальной области видимости, чтобы при завершении функции данные не терялись. Затем вы можете передать его в качестве второго параметра методу 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');

Ты понял суть этого, нет?

...