gpt4 book ai didi

javascript - 如何显示对 AJAX/getJSON 请求的错误(文本/html)响应?

转载 作者:数据小太阳 更新时间:2023-10-29 04:51:40 29 4
gpt4 key购买 nike

我的情况是,我正在开发一个小型 Web 应用程序,其中服务器提供动态 JSON 响应。服务器建立在 cherrypy 上。有时,创建 JSON 数据的代码中存在错误,该错误会抛出,cherrypy 会捕获它并返回 500 错误,并提供详细说明异常的完整 HTML 页面。 (也就是说,响应包含所有内容:<!doctype..><html><head>...</head><body>...</body></html>)但是因为请求是 AJAX,所以不会显示。

我可以很容易地拦截这个错误,并在开发工具中查看它;但我想做的(为了简化调试)是打开一个新页面(就像用户点击了一个链接一样)并在浏览器中显示该响应。我试过了

window.open('', '_self');
$(document).html(jqXHR.responseText);

但我只得到一个空白页。我想我可以存储错误文本并在对服务器的第二个请求中提供它,但是有没有更简洁的方法?


为了跟进,最终有效的代码是这样的:

.error(function(jqXHR, textStatus, errorThrown) {
$(window).bind('unload', function() { document.write(jqXHR.responseText); } );
var win = window.open('', '_self');
return false;
});

不确定最后的 return false是必要的,但它看起来很好。


再次跟进:以上代码在 Opera 中运行可靠。我以为我也看到它在 Webkit 中工作,但我开始注意到它不是;在进一步测试中,它也不适用于 Firefox。

我发现在所有三个平台上都有效的是:

document.open('text/html', true);
document.write(jqXHR.responseText);
document.close();

不必打开另一个窗口或绑定(bind)事件;只需重新打开文档并将文本填入其中即可。


好吧,我又来了。上面的技术要么停止工作,要么当我说它曾经有效时我被绊倒了。特别是 Chrome,似乎没有 document.open定义。

但是!我刚刚发现了一个似乎无处不在的绝妙技巧:

errtext = 'data:text/html;base64,' + window.btoa(jqXHR.responseText);
window.open(errtext, '_self');

这只是将响应转换为完全独立的 data: URL 并在窗口中打开它。

最佳答案

试试这个:

var win = window.open('', '_self');
win.document.getElementsByTagName('Body')[0].innerText = jqXHR.responseText;

关于javascript - 如何显示对 AJAX/getJSON 请求的错误(文本/html)响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542586/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com