我正处于构建包含大量遗留代码的应用程序的阵痛中。对于我正在处理的页面,我需要替换在我的后端构建的片段div - 否则我需要完全替换整个页面。我们的想法是,在我们转发到传统产品之前,需要满足动态控制的流程。
替换片段工作正常,如下面的my_body_content
交换所示。当我试图呈现的内容是不一个片段,而不是整个页面时,就像在“body”交换中一样。此时页面变为空白。
我还想做一些与服务器返回的错误类似的事情。我希望我的好REST 404
错误消息显示在屏幕上,但遗留产品404显示在旧产品404页面中。
是的,这个项目的要求很奇怪。这不是我能解决的问题。
这是我的jQuery调用,更改名称以保护内疚:
$.ajax({
url: "places/things",
type: "POST",
data: JSON.stringify(someBadAssObject),
dataType: "text",
accepts: "text/html",
contentType: "application/json; charset=utf-8",
success: function(x) {
var fragcheck = $("#my_fragment", x);
if (fragcheck != null && fragcheck.length > 0)
$("#my_body_content").html(x);
else
$("body").html(x);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
error(errorThrown);
if (XMLHttpRequest.responseText.startsWith("<html>"))
$("body").html(XMLHttpRequest.responseText);
}
});
答案 0 :(得分:3)
好的,我想我可以回答我自己的问题:
$("body").html(x);
不起作用,
$("html").replaceWith(x);
不起作用,同一个想法的其他排列也不起作用。
这有效:
document.open();
document.write(XMLHttpRequest.responseText);
document.close();
所以整个解决方案看起来像这样:
$.ajax({
url: "places/things",
type: "POST",
data: JSON.stringify(someBadAssObject),
dataType: "text",
accepts: "text/html",
contentType: "application/json; charset=utf-8",
success: function(x) {
var fragcheck = $("#my_fragment", x);
if (fragcheck != null && fragcheck.length > 0)
$("#my_body_content").html(x);
else
{
document.open();
document.write(x);
document.close();
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
error(errorThrown);
if (XMLHttpRequest.responseText.startsWith("<html>"))
{
document.open();
document.write(XMLHttpRequest.responseText);
document.close();
}
}
});
希望这可以帮助下一个可怜的schmoe!