2017-08-26 78 views
3

它聞起來像一個微不足道的,但無法弄清楚。我有一個html表格,由JS動態生成,並填充了從服務器獲取的初始數據,DB作爲參數傳遞給displayResForm。該表單正確顯示填充數據。現在我希望能夠通過此表單修改此數據並將其作爲JSON格式POST回數據庫,但問題是我無法捕獲表單數據在我的JavaScript中。抓取JS中的html表單數據

形式基地如下:

<form method="POST" id="res-form" name="modForm" onSubmit="modSubmit()"> 
     {% csrf_token %} 
</form> 

連帶內置:

function displayResForm(results) { 
    var form = document.getElementById("res-form"); 

    for (var i = 0; i < results.length; i++) { 
     var input = document.createElement("input"); 
     input.setAttribute("type", "number"); 
     input.setAttribute("value", results[i][1]); 
     input.setAttribute("id", toString(i)); 
     var label = document.createElement("label"); 
     label.setAttribute("for", toString(i)); 
     label.appendChild(document.createTextNode(results[i][0])); 

     form.appendChild(label); 
     form.appendChild(input); 
     form.appendChild(document.createElement("br")); 
    } 

    var mod = document.createElement("input"); 
    mod.setAttribute("class", "btn btn-info"); 
    mod.setAttribute("type", "submit"); 
    mod.setAttribute("value", "Modify"); 
    mod.setAttribute("onclick", "modSubmit()"); 
    form.appendChild(mod); 
} 

正如你可以看到我有modSubmit(一個兩個電話在表單標籤中,其他在提交按鈕),但都不起作用。 我想抓住它(發送POST請求到服務器,尚未實現):

function modSubmit() { 
    //var formData = JSON.stringify($("modForm").serializeArray()); 
    var formData = $('modForm').serializeArray() 
    console.log("formData=", formData); 
    alert(formData); 
    // todo POST back to server 
    return false; 
} 

的問題是我不斷獲取空formData ...

編輯:

我可以很容易地通過手動

var x = document.getElementById("res-form"); 
var el = x.elements[1].value; 
alert(el); 

獲得元素的價值,但我希望只有一行。

回答

2

你以前做的問題是在下面的行使用的選擇:

var formData = $('modForm').serializeArray() 
__________________^^^^^^^ 

此行改掉選擇了一個名爲modForm,而不是說有一個名字等於modForm的元素標籤。

相反,你可以使用選擇的形式:

var formData = $('[name="modForm"]').serializeArray(); 
//Or also using the id attribute 
var formData = $('#res-form').serializeArray(); 

希望這有助於。

+0

有一個進步,我現在'FORMDATA = [{ 「名」: 「csrfmiddlewaretoken」, 「值」: 「lcNuR9kQlI67JHolg4naJbXjT39DoCKvNXSSGpOpx8ebl69gtBXCZVdVdZvQVmTC」}]'...所以這是Django的添加元數據'csrf_token'這是偉大的,因爲我需要這個,但仍然錯過了真實的數據... – micsza