提交未知行数的表格数据!先送50分,不够再加!重在参与

TaoTaoYou 2008-09-25 04:02:06

<Table width="500" border="1">
<Thead>
<Tr>
<Td>商品编号</Td><Td>商品名称</Td><Td>规格</Td><Td>型号</Td><Td>数量</Td>
</Tr>
</Thead>

<Tbody>
<Tr>

<Td>00001</Td><Td>大宝</Td><Td>瓶装</Td><Td>00215</Td><Td>10</Td>
<Td>00001</Td><Td>飘柔</Td><Td>瓶装</Td><Td>00215</Td><Td>10</Td>
<Td>00001</Td><Td>海飞丝</Td><Td>瓶装</Td><Td>00215</Td><Td>10</Td>

</Tr>
</Tbody>


</Table>




我想用xmlhttpRequest实现异步提交数据,现在我们看到的是3行产品,实际应用中你不知道他要输入几行,
问题:
提交表格内所有商品数据,接受页按每一行的数据插入到数据库里。要求用xmlhttpReqeust实现在异步提交,要求 、稳定、高效 ,大家各抒已见,小弟先谢过,最后谁的方法可行,在此分基础上再独得50分
...全文
190 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jarvis-Li 2008-09-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 showbo 的回复:]
引用 6 楼 TaoTaoYou 的回复:

上面的是循环插入数据,万一因数据类型 发生错误,怎么处理?


谁还有相对比较好的,更稳定的


你不知道在服务器端再判断过数据格式和类型是否正确吗???
[/Quote]
不管是不是INT型你都加上‘’到数据库中就不会出现数据类型错误了。
TaoTaoYou 2008-09-26
  • 打赏
  • 举报
回复
呵呵,表急,只是想集思广益。只是想精益求精。
Go 旅城通票 2008-09-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 TaoTaoYou 的回复:]

上面的是循环插入数据,万一因数据类型 发生错误,怎么处理?


谁还有相对比较好的,更稳定的
[/Quote]

你不知道在服务器端再判断过数据格式和类型是否正确吗???
TaoTaoYou 2008-09-26
  • 打赏
  • 举报
回复

上面的是循环插入数据,万一因数据类型 发生错误,怎么处理?





谁还有相对比较好的,更稳定的
无尽飞羽 2008-09-25
  • 打赏
  • 举报
回复
楼上好辛苦,顶一个
Go 旅城通票 2008-09-25
  • 打赏
  • 举报
回复
data.htm
<Table width="500" border="1">
<Thead>
<Tr>
<Td>商品编号</Td><Td>商品名称</Td><Td>规格</Td><Td>型号</Td><Td>数量</Td>
</Tr>
</Thead>
<Tbody id="tbodyData">
<Tr>
<Td>00001</Td><Td>大宝</Td><Td>瓶装</Td><Td>00215</Td><Td>10</Td> </Tr>
<Tr><Td>00001</Td><Td>飘柔</Td><Td>瓶装</Td><Td>00215</Td><Td>10</Td> </Tr>
<Tr><Td>00001</Td><Td>海飞丝1</Td><Td>瓶装</Td><Td>00215</Td><Td>10</Td> </Tr>
<Tr><Td>00001</Td><Td>海飞丝2</Td><Td>瓶装</Td><Td>00215</Td><Td>10</Td> </Tr>
<Tr><Td>00001</Td><Td>海飞丝3</Td><Td>瓶装</Td><Td>00215</Td><Td>10</Td>
</Tr>
</Tbody>
<tr><td colspan="5" align="center"><input type="button" onclick="SendData()" value="发送数据"/></td></tr>
</Table>
<script>
function $(id){return document.getElementById(id);}
function createObj()
{
var o=null;
if(typeof(XMLHttpRequest)!="undefined") return new XMLHttpRequest();
if(window.ActiveXObject){
var MSXML=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHTTP"];
for(var i=0;i<MSXML.length;i++){
try{
o= new ActiveXObject(MSXML[i]);return o;
}
catch(e){}
}
}
return null;
}
//以一定数据格式收集数据,格式为“商品编号,商品名称,规格,型号,数量|商品编号,商品名称,规格,型号,数量"这种,就是每个产品的信息

用逗号分隔,每个产品用|号分隔
function CollectData(){
var data="";
var d=$("tbodyData");
//注意要编码下数据,防止出现乱码
for(var i=0;i<d.rows.length;i++)
data+=d.rows[i].cells[0].innerHTML+","+escape(d.rows[i].cells[1].innerHTML)+","+escape(d.rows[i].cells[2].innerHTML)

+","+d.rows[i].cells[3].innerHTML+","+d.rows[i].cells[4].innerHTML+"|";
if(data!="")data=data.substr(0,data.length-1);//去掉最好一个|
return data;
}
function SendData(){
var data=CollectData();
var o=createObj();
o.open("post","db.asp",true);
o.onreadystatechange=function(){
if(o.readyState==4){
if(o.status==200)alert("插入成功!");//成功
else alert("发生错误!\n\n"+o.responseText);//错误
}
}
o.setRequestHeader("content-type","application/x-www-form-urlencoded");//注意要设置头
o.send("data="+data);//发送收集的数据
}
</script>



db.asp
data=request.form("data")'这个就是你接收到的数据,然后按上面的格式分析你的数据
pro=split(data,"|")
for i=0 to ubound(pro)
info=split(pro(i),",")
'下面为你的插入数据库代码,这里只是显示数据而已
response.write "商品编号"&info(0)&vbnewline
response.write "商品名称"&info(1)&vbnewline
response.write "规格"&info(2)&vbnewline
response.write "型号"&info(3)&vbnewline
response.write "数量"&info(4)&vbnewline
resposne.write "<hr>"
next
Dudu2008168 2008-09-25
  • 打赏
  • 举报
回复
如果數據量比較大,逐條逐條提交,系統資源會消耗得比較大。
如將此些數據放入<div></div>中,再取div中的內容用xmlhttpReqeust提交,即可實現。
此方法個人認為非常實用!
MadWork 2008-09-25
  • 打赏
  • 举报
回复
for(tr)
for(td)
MadWork 2008-09-25
  • 打赏
  • 举报
回复
我只能做到用for循环table中的每个结点

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧