【问题标题】:How do you preserve HTML in a jQuery AJAX request?如何在 jQuery AJAX 请求中保留 HTML?
【发布时间】:2008-11-19 14:13:04
【问题描述】:

我正在做一个想要实现 AJAX 的项目,我决定将 jQuery 作为一个 JavaScript 库。这是 HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>jQuery AJAX</title>
    <!--<script language="javascript" type="text/javascript" src="inc/scripts.js"></script>-->
    <script language="javascript" type="text/javascript" src="inc/jquery-1.2.6-intellisense.js"></script>
    <script language="javascript" type="text/javascript">
        $(document).ready(function(){
            $("#clicker").click(function () {
                $.ajax({
                    type: "POST",
                    url: "test.aspx/randomString",
                    data: "{}",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(msg) {
                        $("#result").append(msg.d);
                    }
                });
            });
        });
    </script>
</head>
<body runat="server">
    <form id="form1" runat="server">
        <div id="result" runat="server" style="margin-bottom:5em;"></div>
        <div id="clicker" runat="server" style="cursor:pointer;">Click Here to Refresh</div>
    </form>
</body>
</html>

这是 test.aspx 上的后端:

<WebMethod()> _
Public Shared Function randomString() As String
    Dim KeyGen As RandomKeyGenerator
    Dim NumKeys As Integer
    Dim i_Keys As Integer
    Dim RandomKey As String
    Dim oRet As New StringBuilder
    NumKeys = 20
    KeyGen = New RandomKeyGenerator
    KeyGen.KeyLetters = "abcdefghijklmnopqrstuvwxyz"
    KeyGen.KeyNumbers = "0123456789"
    KeyGen.KeyChars = 12
    For i_Keys = 1 To NumKeys
        RandomKey = KeyGen.Generate()
        oRet.AppendLine(String.Format("{0}{1}", RandomKey, ControlChars.NewLine))
    Next
    Return oRet.ToString
End Function

我尝试了 $("#result).text(msg.d) 以及形成一个列表 String.Format("&lt;li&gt;{0}&lt;/li&gt;",RandomKey),并添加了一个中断标记 String.Format("{0}&lt;br /&gt;",RandomKey)

当我运行它作为一行返回的页面时,会显示所有 HTML。我需要做什么才能使其呈现 HTML?

我从this site 获得了有关如何在没有 ScriptManager 的情况下调用页面的信息。

【问题讨论】:

    标签: asp.net jquery


    【解决方案1】:

    用途:

    $("#result").html(msg.d)
    

    【讨论】:

      【解决方案2】:

      如果您需要将 html 放在一个节点中,例如如果您有一个 id=container 的 div。你这样做 $('#container').html(htmlContent);。但请注意,您从服务器返回的响应不应将 html 转换为安全字符串(带有字符实体)。但是您也使用 json 作为数据类型。您应该为此使用文本。或者从服务器获取的 json 变量中获取字符串并将其植入节点中。

      【讨论】:

      • 我只是从我在帖子中引用的网站复制/粘贴代码。更改查询中的参数给我的结果与公斤的建议相同
      【解决方案3】:

      为什么在返回 html 时使用“json”作为数据类型?使用 "html" 作为 dataType 并将 msg.d 替换为 msg

      【讨论】:

      • 当我把它改成 HTML/msg 时,我得到了这个: {"d":"r537pkRW553b\r\n\r\nOzgN1mf3u5 ....
      • 这个json对象是从哪里来的?从您提供的源代码中并不明显。您是否使用带有 json 绑定的 Web 服务?
      • 他使用特定调用语法的原因是强制 ASMX Web 服务返回 JSON,即使它不是 ASP.NET AJAX 发出请求。这是必要的。
      猜你喜欢
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2014-05-13
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      相关资源
      最近更新 更多