jQuery - 获取Ajax请求正文的内容

时间:2011-08-06 00:56:04

标签: jquery ajax asp.net-mvc-3

这个函数是我的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 个答案:

答案 0 :(得分:1)

这应该有效:

$(resp).find('> *').appendTo($('div#xxx'));

答案 1 :(得分:0)

试试这个:

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

我用这段代码做了你想做的事。希望它有所帮助。

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

我在Can I use regex with page contain that get from ajax() function?

中找到了这个答案