2

このコードでhtmlを文字列として返すサービスへのajax呼び出しを行っています..

var xhReq = new XMLHttpRequest();
xhReq.open("POST", "MobileClientService.svc/REST/TestHtmlSend", false);
xhReq.send(null);
xhReq.responseType = "text/html";
var serverResponse = xhReq.responseText;
alert(serverResponse); // Shows "15"

サービスは html を正しく作成します。

<div data-bb-type="item" data-bb-img="Images/imagesBBUI/icons/icon11.png" data-bb-title="Title From Server">

</div>

問題は、コードの「serverResponse」がこれを返すことです..

<div data-bb-type=\"item\" data-bb-img=\"Images/imagesBBUI/icons/icon11.png\" data-bb-title=\"Title From Server\">
  \u000d\u000a\u000d\u000a
<\/div>

html の作成に使用する C# コードを次に示します。

  public string TestHtmlSend()
        {
            string moomoo = String.Empty;

            // Initialize StringWriter instance.
            StringWriter stringWriter = new StringWriter();

            // Put HtmlTextWriter in using block because it needs to call Dispose.
            using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
            {
                //start collapse div
                writer.AddAttribute("data-bb-type", "item");
                writer.AddAttribute("data-bb-img", "Images/imagesBBUI/icons/icon11.png");
                writer.AddAttribute("data-bb-title", "Title From Server");
                writer.RenderBeginTag(HtmlTextWriterTag.Div);
                //writer.Write("Some Whatever Description");
                writer.RenderEndTag();

            }

            moomoo = stringWriter.ToString();

コードを変更して、余分な "\" なしで HTML をそのまま返すにはどうすればよいですか?

4

1 に答える 1

1

以前にこのような奇妙な問題に遭遇したことがありますが、通常は常にミドルウェアに行き着きます。

サーバー側の変数補間の問題のようです。

ミドルウェアの言語やフレームワークは何ですか?

クリーンな方法で出力ストリームに出力していることを確認してください。

  • 単一の変数のみを使用する (引用補間を簡単に確認できる場所)
  • 不必要に出力をエスケープしない
于 2012-09-28T20:29:11.450 に答える