2016-04-23 115 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。那樣做了。謝謝! –