2

さまざまな div からデータを投稿するこの JavaScript がありますが、改行を保持するようには見えません。

見つかったコンテンツで .text() を使用しているという事実に関係していると思いますが、これはおそらく改行をまったく保持していません。.html() を試してみましたが、何らかの理由で新しい行に書かれたすべてのテキストが div に埋め込まれます。

コードは次のとおりです。

<script type="text/javascript">

$(document).ready(function() {

    $("#actor_result").load('xml/actortoxml.php?owner=<?php echo $_SESSION['username'] . "&id=" . $_GET['id']; ?>');
    $('#save_editable').click(function() {
        var name = $(document).find('#actorname').text();
        var current = $(document).find('#currenthealth').text();
        var max = $(document).find('#maxhealth').text();
        var effects = $(document).find('#actoreffects').text();
        var notes = $(document).find('#actornotes').text();

        $.ajax({
            url: 'actor_profile.php',
            type: 'POST',
            data: {
                update: 'true',
                actorid: <?php echo $_GET['id']; ?>,
                actorname: name, currenthealth: current, maxhealth: max, actoreffects: effects, actornotes: notes
            },
            success : function() {
            // gets called when ajax request completes successfully
            $("#actor_result").hide().load('xml/actortoxml.php?owner=<?php echo $_SESSION['username'] . "&id=" . $_GET['id']; ?>').fadeIn(500);     
            },
            error : function(err) {
                // in case of error
                console.log(err);
                alert('error');
            }
        });
    });
});
</script>

編集、これはxmlファイルから生成されたhtmlです:

<div id="actor_result" style="display: block;">
    <!--?xml version="1.0"?-->

    <div class="row-fluid row span6 offset3">
        <div class="media well well-small">
            <a class="pull-left" href="#"><img class=
            "media-object img-circle circle128" src=
            "images/avatar/actor/Davius.png"></a>

            <div class="media-body page-header actor-profile">
                <div class="editable_name" contenteditable="true" id=
                "actorname">
                    <h4 class="media-heading">Davius</h4>
                </div><small><strong>awarnhag's minion</strong></small>
            </div><strong>Health:</strong>

            <div class="div_inline editable_hp" contenteditable="true" id=
            "currenthealth">
                17
            </div>/

            <div class="div_inline editable_hp" contenteditable="true" id=
            "maxhealth">
                20
            </div>hp
        </div>

        <h5><span class="label">Effects</span></h5>

        <div class="editable well well-small" contenteditable="true" id=
        "actoreffects">
            Mumblecore bushwick sed, nulla street art dolore delectus wolf
            american apparel artisan sriracha. Laboris seitan hoodie,
            freegan brooklyn letterpress adipisicing chambray mixtape id
            tofu organic butcher small batch. Art party carles readymade
            messenger bag williamsburg. Irony placeat sustainable, high
            life cillum yr sed vinyl pork belly messenger bag williamsburg
            VHS. Occaecat lo-fi readymade gluten-free 3 wolf moon. Ad tofu
            twee, blog nulla mumblecore gentrify brooklyn odio cliche
            selvage put a bird on it pork belly chillwave deserunt. Ea
            assumenda chillwave, keytar velit tumblr pour-over enim VHS
            mcsweeney's blog.aaaa
        </div>

        <h5><span class="label">Notes</span></h5>

        <div class="editable well well-small" contenteditable="true" id=
        "actornotes"></div>
    </div>
</div>
4

2 に答える 2

1

innerHTML を取得して、すべての div と brs を手動で置き換えることができます。

$("#id").html()
        .replace(/<(br|p|div)[^>]*>/g, "\n")
        .replace(/<\/?\w+[^>]*>/g, "");

http://jsfiddle.net/tarabyte/GsECc/4/

于 2012-12-06T20:28:48.683 に答える
0

上記のスニペットから何が起こっているのかを正確に判断するのは困難です。

データを送信 (POST) する前、またはデータを受信 ($.load) した後、<br>タグを " \n " に、またはその逆に変換しようとしましたか? 「 #actor_result 」はどのタグタイプですか(div、textarea、input など)?

于 2012-12-06T20:06:28.113 に答える