【问题标题】:Sending html data via $post fails通过 $post 发送 html 数据失败
【发布时间】:2010-03-22 01:14:44
【问题描述】:

我使用下面的代码很好,但是当我使用下面的代码试图将 html 片段发送到处理页面以将其保存为文件时,我什么也没得到。

我尝试使用 ajax 并将 processData 设置为 html、文本和 xml 的虚假广告数据类型,但没有任何效果。我在这方面找不到任何东西,所以我想我一定错过了一些相当琐碎的东西,但我已经做了 3 个小时了。

This works
$.post("SaveFile.aspx", {f: "test4.htm", c: "This is a test"},
   function(data){
        alert(data);
   }, "text");  

This fails
$.post("SaveFile.aspx", {f: "test4.htm", c: "<h1>This is a test</h1>"},
   function(data){
        alert(data);
   }, "text");  

【问题讨论】:

  • 尽量清楚一点。你说的失败是什么意思?您的浏览器错误控制台中是否有错误,回调是否被调用。您是否在 serverlogs 中看到了 ajax 调用。或者按照 Sky Sanders 的建议尝试 c: encodeURIComponent("&lt;h1&gt;This is a test&lt;/h1&gt;")
  • 您使用火狐?安装 Firebug,您将能够准确地看到发送的内容和返回的内容。

标签: javascript jquery html ajax http-post


【解决方案1】:

先试试uriEncoding的值,像这样……

它可能会按预期将 xml 发送到您的端点。

var value = encodeURIComponent("<h1>This is a test</h1>");
$.post("SaveFile.aspx", {f: "test4.htm", c:value },
   function(data){
        alert(data);
   }, "text");

【讨论】:

    【解决方案2】:

    如果服务器出现错误,.post 成功函数将不会被调用。尝试使用 .ajax 并传递成功和错误函数。

    【讨论】:

    • 我怀疑服务器上是否有错误,因为他基本上每次都将相同的输入传递到同一个地方,除了他在第二个中有一些标记。
    • 虽然我也对此表示怀疑,但这是 2 个 sn-ps 之间的唯一区别
    【解决方案3】:

    它认为你的错误来自 asp.net 中的 ValidateRequest。如果您想对所有页面执行此操作,则无法在没有 htmlEncoding 您的 html 或禁用 aspx 页面的 @page 指令或 web.config 中的 ValidateResquest 参数的情况下将纯 html 发送到 asp.net 页面。

    想了解更多关于 asp.net 的信息吗?访问http://www.developerit.com

    【讨论】:

    • 注意:禁用 validateRequest 可能是安全漏洞。因此,您最好使用 htmlEnconding 并使用白名单来验证没有人发送脚本标签,因为这可能是潜在的 xss 攻击。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    相关资源
    最近更新 更多