这个函数是我的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();
});
}
答案 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?
中找到了这个答案