2016-04-23 68 views
1

我在我的页面上有一个textarea输入,我想用AJAX发布到服务器。 AJAX调用很好,但是,它不会看到textarea中的值。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代码为 '提示': '胡说',它工作得很好。但每次我发布'提示':$('#id_prompt')。val(),它是一个空值。

+1

你忘了关textarea的,他们都没有自我封闭,而且需要''关闭标签 – adeneo

+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> 
+0

对不起,我忘了当我重写问题的代码。我确实有一个在那里,它仍然是坏的。我更新了这个问题来纠正这个问题。 –

+0

在这种情况下,你确定你没有在其他地方定义的id_prompt吗?因为https://jsfiddle.net/sbra8y8t/上的简单模拟似乎正在工作。 –

+0

啊!我在同一页面上生成了一个新的提示表单,该表单生成了另一个具有相同ID的textarea。那样做了。谢谢! –