0

我只是asp的初学者,我有一个问题。我有一个动态添加行的通用函数,代码如下

function Myfunction(tableid) 
{

var table=document.getElementById("tablerow");        

var rowCount = table.rows.length;        

var row = table.insertRow(rowCount);        


var cell1 = row.insertCell(0); 

cell1.innerHTML = rowCount + 1;


var cell2 = row.insertCell(1);

var element2 = document.createElement("input");

cell2.appendChild(element2);


var cell3 = row.insertCell(2);

var element3 = document.createElement("input");

cell3.appendChild(element3);


var cell4 = row.insertCell(3);

var element4 = document.createElement("input");

cell4.appendChild(element4);

}

而html的AddPage代码如下:

"table id="tablerow"

tr align="center"

input type="textbox" name="subjectid"

input type="textbox" name="subjectname"

input type="Checkbox" name="status"  value="Y"

input type="Checkbox" name="status"  value="N"

input type="textbox" name="internal"

input type="textbox" name="external"

tr

插入查询如下:

sql1="INSERT INTO SUBJECT_MASTER (SUBJECT_ID,SUBJECT_NAME,ACTIVE_STATUS,INTERNAL,EXTERNAL) VALUES ("&subjectid & ",'" &subjectname &"','"&activestatus &"','"&internal &"','"&external &"')"

现在,如果我添加一行并使用新添加的行插入数据,它不会插入数据。所以请你能帮助我。还请清除我的复选框问题。

4

1 回答 1

0

经典 ASP 根据元素名称读取表单数据- 每个元素根据其名称发送其值。如果没有名称,则根本不会将值发送到服务器。

因此,要让新添加的元素发送它们的值,只需给它们一个名称。假设您想要与现有文本框相同的名称:

var cell2 = row.insertCell(1);
var element2 = document.createElement("input");
element2.name = "subjectid"
cell2.appendChild(element2);

var cell3 = row.insertCell(2);
var element3 = document.createElement("input");
element3.name = "subjectname"
cell3.appendChild(element3);

这样,值将作为逗号分隔的字符串发送。

重要提示:您当前的代码对 SQL 注入攻击是开放的。如果您不希望您的数据库被黑客攻击、复制和/或删除,您最好了解 SQL 注入(只需 Google 即可)并修复您的代码。

于 2013-01-06T07:43:05.777 回答