【问题标题】:Replacing the contents of an entire webpage through ajax通过ajax替换整个网页的内容
【发布时间】:2010-01-20 00:56:46
【问题描述】:

我知道这有点骇人听闻,但为了简单起见,我想用通过 Ajax 收到的答案替换整个网页的内容。这包括可能的 HTTP 标头。有可能吗?

为了进一步澄清,现在我添加了用于调试目的:

alert(response);

这会产生:

example http://img195.imageshack.us/img195/6362/testbzi.png

由于我不想进入的原因,我不能做像location.href = 'ajax_page' 这样的事情。使用jQuery的解决方案会更好。

获取数据的代码:

$(document).ready(function() {
    new AjaxUpload('#upload', {
        action: '/AjaxSubmit',
        name: 'file',
        autoSubmit: true,
        onSubmit: function(file, extension) { return true; },
        onComplete: function(file, response) {
                alert(response);
        }
    });
});

【问题讨论】:

  • 您对 AJAX 数据流使用什么编码?这看起来像 UTF-16 什么的。此外,您只想放入正文,而不是所有标题。您能告诉我们您用于 AJAX 调用的代码吗?
  • Deflate :O 而且由于某种原因它仍然被压缩,它与编码无关..我将粘贴代码
  • 我不确定为什么响应也会返回标头。 AjaxUpload 库似乎有问题。我建议切换到其他东西,或者至少安装一个像 FireBug 这样的调试工具来记录 onComplete 函数的arguments

标签: javascript jquery html dom


【解决方案1】:

我不认为你可以,而不是 HTTP 标头。原因是您可以控制的范围,即文档,是在接收到数据后创建和呈现的。

大多数 HTTP 标头都会影响数据传输和接收的方式。例如,当您收到响应时,它已经被解压缩,已经应用了字符编码等。

【讨论】:

    【解决方案2】:

    我不确定你所说的包含 HTTP 标头是什么意思。

    从您的屏幕截图来看,您的服务器似乎没有正确设置编码。

    解决这个问题将取决于您请求的页面和您使用的网络服务器。

    您应该尝试在新选项卡和/或Fiddler 中请求该 URL,并且您不应该在 AJAX 调用中对其进行调试,直到您可以在浏览器选项卡中获得正确的内容。

    【讨论】:

    • 不是编码,是压缩
    • 它是如何压缩的?如果它是标准的 GZIP 编码,则应该由浏览器 (AFAIK) 透明地处理。如果不是,这在定义上是不可能的,除非你用 Javascript 编写解压器。
    • 它像网站上的任何其他页面一样被瘪了。
    【解决方案3】:

    服务器必须考虑以下两点:

    • 将其写为 UTF-8。
    • Content-Type 响应头设置为text/html;charset=UTF-8

    【讨论】:

      【解决方案4】:

      我会使用<a href=""></a>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-24
        • 2010-10-03
        • 1970-01-01
        • 2022-12-14
        • 2017-01-15
        • 1970-01-01
        • 2016-02-28
        相关资源
        最近更新 更多