2

ユーザーがテキストを入力してメールで送信できるフォームを表示する一時的な SharePoint ページを設定しようとしています。そのため、JS を呼び出して入力したテキストを SharePoint の SOAP リクエストに入れるフォームと送信ボタンを含むページがあり、Sharepoint はそれをリストに追加し、その情報を含む電子メールを送信します。ここまでは順調で、痛みもほとんどありません。

私が抱えている問題は、Outlook が入力されたテキストの一部である改行を無視することです。「ソースの表示」オプションを使用してメモ帳で通常どおり表示できるため、それらは何によっても取り除かれていません。これは、Outlook がメッセージを HTML として表示しようとしていて、どうすればよいかわからないためだと思います。\r\n通常は、 のすべてのインスタンスをタグに置き換える JS を投入する<br />だけですが、それを SOAP リクエストに入れると、Sharepoint リストに追加される前に、タグに続くものがすべて切り取られてしまいます。

私が試した他のことは

  • 各改行の先頭に一対のスペースを追加 (変更なし)
  • \r\nすべての改行にの 2 番目のセットを追加(変更なし)
  • のすべてのインスタンス\r\n%0D%0A(テキストとして表示)に置き換えました
  • のすべてのインスタンス\r\nを(最初のバックスラッシュをエスケープするため\parに実際に使用される) に置き換えました。\\par(テキストで表示)
  • \tのすべてのインスタンスに追加されます\r\n。(変化なし)
  • 先頭に「.」を追加 のすべてのインスタンスに\r\n。(ピリオドは表示されますが、改行は表示されません)

Outlook 2007、Sharepoint 2007、および Internet Explorer 8 を使用しています。

私は質問を読みました:

これは、テキストを編集し、SOAP リクエストを作成して POST するために使用している JS 関数です。現在、各改行の前にピリオドを配置するように設定されています。

    function createAndPostSOAP(siteURL, listName)
    {
        var moreText = $("#MoreText")[0].innerText;

        var linebreakCount = moreText.match(/\r\n/g);

        moreText= "  " + moreText;
        for (var count = linebreakCount.length; count >= 0; count--)
        {
            moreText = moreText.replace("\r\n", ".[replace]");
        }

        while(moreText.indexOf("[replace]") != -1)
        {
            moreText = moreText.replace("[replace]", "\r\n");
        }

        var batch = 
            "<Batch OnError='Continue'> \
                    <Method ID='1' Cmd='New'> \
                        <Field Name='Text'>" + $("Text")[0].value + "</Field> \
                        <Field Name='MoreText'>" + moreText + "</Field> \
                    </Method> \
             </Batch>";

         var soapEnv =
                "<?xml version='1.0' encoding='utf-8'?> \
            <soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' \
                xmlns:xsd='http://www.w3.org/2001/XMLSchema' \
                xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> \
               <soap:Body> \
                <UpdateListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
                  <listName>" + listName + "</listName> \
                  <updates> \
                    " + batch + "</updates> \
                </UpdateListItems> \
              </soap:Body> \
            </soap:Envelope>";

        $.ajax({
        url: siteURL + "/_vti_bin/lists.asmx",
        beforeSend: function(xhr) {
            xhr.setRequestHeader    ("SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems");
        },
        type: "POST",
        dataType: "xml",
        data: soapEnv,
        contentType: "text/xml; charset=utf-8"
        }); 
    window.location='starting_page.htm';
    }

Sharepointよりもよく知っているので、私は主にJavascriptの端からこれを攻撃していますが、Sharepoint 2007で<br />、データが既に列に追加されたらスクリプトで改行を変更する方法はありますか? または、Javascriptで見逃した角度はありますか?

4

1 に答える 1

1

コード内のすべての HTML タグをエンコードする必要があります。にとっての意味

&amp; → & (ampersand)
&lt; → < (less-than sign)
&gt; → > (greater-than sign)
&quot; → " (quotation mark)
&apos; → ' (apostrophe)


以下のコードを試してください。

String Input = "adding this text <br/> this in next line <>";
String Output = Server.HtmlEncode(Input);
//

もし必要なら

Output = Output.Replace("\r\n", "<br />");
于 2012-11-20T12:43:27.870 に答える