jQuery - получение содержимого тела Ajax-запроса. - PullRequest
0 голосов
/ 06 августа 2011

Эта функция - мой обработчик ошибок ASP.NET MVC Ajax. Я хочу получить ответ HTML и добавить его в div, но только то, что находится внутри тела. Если я встраиваю прямой ответ, он в итоге объединяет теги html и body ответа страницы с ошибкой с текущей страницей, что приводит к неправильному размеру текста. Как я могу просто получить содержимое тела? Я пытался $('body', resp).html(), но это ничего не дает мне.

function crayzeAjaxError(request) {
    var resp = request.response;
    if ($('#crayze-ajax-error-dialog').size() == 0) {
        $('body').append('<div id="crayze-ajax-error-dialog" title="AJAX error" style="display:none;">' +
            '<p>Sorry, the request failed with status code ' + request.status + '</p>' +
            '<button id="crayze-ajax-error-dialog-show-details">Show details</button>' +
            '<object id="crayze-ajax-error-dialog-response"></object>' +
            '</div>');
    }

    $('#crayze-ajax-error-dialog-response').hide();

    $('#crayze-ajax-error-dialog').dialog({ width: 600, height: 400, modal: true });

    $('#crayze-ajax-error-dialog-show-details').click(function () {
        $('#crayze-ajax-error-dialog-response').html($('body', resp).html());
        $('#crayze-ajax-error-dialog-response').show();
    });
}

Ответы [ 2 ]

1 голос
/ 06 августа 2011

Это должно работать:

$(resp).find('> *').appendTo($('div#xxx'));
0 голосов
/ 06 августа 2011

Попробуйте это:

$('body', $(resp)).html()

Я сделал то, что вы хотите с этим фрагментом кода. Надеюсь, это поможет.

var regexp = /<body[^>]*>([\s\S]*?)<\/body>/;
var mbody = regexp.exec(resp);

Я нашел этот ответ в Могу ли я использовать регулярное выражение со страницей, получаемой из функции ajax ()?

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