在经典的asp中动态添加行,并将新行的连接提供给数据库

时间:2013-01-05 04:24:38

标签: javascript asp-classic oracle11g

我只是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 &"')"

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

1 个答案:

答案 0 :(得分:0)

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

因此,要让新添加的元素发送其值,只需为它们命名即可。假设您想要与现有文本框同名:

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)并修复代码。