JQuery Ajax загрузка контента с другой страницы сайта - PullRequest
1 голос
/ 02 октября 2009

Я пытаюсь извлечь содержимое Div с другой страницы сайта, над которым я работаю, и обновить Div на текущей странице. Я хочу сделать это, поэтому мне не нужна перезагрузка страницы. Вызов Ajax, который я делаю, прекрасно работает в Firefox, он обновляет Div содержимым с другой страницы сайта. Проблема в том, что он ломается в IE, когда я пытаюсь получить HTML из данных, возвращаемых с помощью .html (), я получаю нулевое значение в IE. Если я сделаю оповещение только о возвращаемых данных, HTML появится.

var divItems = $("#tab-bbp a").attr("href");
$.ajax({
   type: "GET",
   url: divItems,
   dataType: "html",
   success: function(msg){
       $("#persistenslcont").html($("#persistenslcont",msg).html());
       //null in IE, returns HTML in FF
       alert($("#persistenslcont",msg).html());
   },
   error: function () {
       alert("error");
}                   
});

Кажется странным, что это не работает в IE. Кроме того, я не уверен, является ли лучший метод делать то, что я пытаюсь достичь. Любая помощь будет оценена.

Редактировать

Когда я попробовал функцию .load, у меня все еще возникали проблемы с IE ниже, это комментированный код. У меня есть многочисленные предупреждения, чтобы попытаться выяснить, в чем проблема. Кажется, # 2 должен работать, но в IE возвращает ноль.

Можно ли манипулировать [объектом объекта] или посмотреть, что в нем содержится?

var divItems = $("#tab-bbp a").attr("href");
 $("#persistenslcont").load(slItems + " #persistenslcont",
                                    function (data, textStatus, req) {
                                        //returns HTML code in the alert in IE & FF
                                        alert("test 1" + req.responseText);

                                        //returns null in IE - In FF returns proper code
                                        alert("test 2" + $("#persistenslcont",req.responseText).html());

                                        //returns [object Object] same in IE & FF
                                        alert("test 3" + $("#persistenslcont",data));

                                        //returns [object Object] same in IE & FF
                                        var $response = $('<div />').html(data);
                                        var $test4 = $response.find('#persistenslcont');
                                        $('#persistenslcont').append($test4);
                                        alert("test 4" + $test4);

                                        if (textStatus == "error") {
                                          alert("error");
                                        }
                                  });

Ответы [ 3 ]

0 голосов
/ 02 октября 2009

Вы можете указать, какую часть запрашиваемой страницы вы хотите в jquery. Я бы использовал функцию load():

     $("#persistenslcont").load($(divItems + " #divcontent");

Я думаю, что испортил ваш код, но основная идея верна и должна работать в IE. По сути, просто наведите ajax-запрос на ту часть страницы, которая вам нужна, вместо того, чтобы разбираться в HTML всей запрашиваемой страницы.

0 голосов
/ 06 октября 2009

Проблема с моим вызовом Ajax в IE была связана с открытием <div>. Почему-то я сначала не проверял свою структуру HTML. Это просто еще одна причина, почему проверка HTML важна!

0 голосов
/ 02 октября 2009

Я думаю, вы можете сделать функцию успеха проще, как это:

success: function(msg){
   $("#persistenslcont").html(msg);

   alert($("#persistenslcont").html(msg));

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...