Ajax没有看到textarea值

时间:2016-04-23 23:05:25

标签: javascript jquery html ajax django

我的页面上有一个textarea输入,我想使用AJAX发布到服务器。 AJAX调用很好,但是,它不会看到textarea中的值。

我的HTML:

<div class="promptBody">
    <div id="promptText" onclick="replaceWithInput(this)">
        <p class="promptBody"><div id="prompty">{{prompt.prompt|linebreaks}}</div></p>
    </div>
    <form id="promptUpdateForm">
        <div id="promptInput">
            <p><textarea class="input" cols="40" id="id_prompt" name="prompt" placeholder="Prompt" rows="10"></textarea></p>
            <p><input class="submit" type="submit" name="submit" id="submit" value="Edit Prompt" /></p>
        </div>
    </form>
</div>

<script type="text/javascript">
    $(document).ready(function() {
        $(document).on('submit', '#promptUpdateForm', function(e) {
            e.preventDefault();
            $.ajax({
                type: 'POST',
                url: '/apps/litprompt/a/{{prompt.id}}/update/',
                data: {
                    'prompt': $('#id_prompt').val(),
                    csrfmiddlewaretoken: $('input[name="csrfmiddlewaretoken"]').val(),
                },
                success: function(json) {
                    $('#promptText').html(json.prompt_data);
                    var promptText = document.getElementById('promptText');
                    var promptInput = document.getElementById('promptInput');
                    promptText.style.display = 'block';
                    promptInput.style.display = 'none';
                }
            });
        });
    });
</script>

如果我将数据中的ajax代码更改为'prompt':'blah',它就可以了。但每次我使用'prompt'发布:$('#id_prompt')。val(),它是一个空值。

1 个答案:

答案 0 :(得分:1)

textarea HTML元素不是自动关闭的。它必须由</textarea>关闭。

见如下:

<div class="promptBody">
    <div id="promptText" onclick="replaceWithInput(this)">
        <p class="promptBody"><div id="prompty">{{prompt.prompt|linebreaks}}</div></p>
    </div>
    <form id="promptUpdateForm">
        <div id="promptInput">
            <p><textarea class="input" cols="40" id="id_prompt" name="prompt" placeholder="Prompt" rows="10"></textarea></p>
            <p><input class="submit" type="submit" name="submit" id="submit" value="Edit Prompt" /></p>
        </div>
    </form>
</div>