比如有一表格,其代码为<table>
<tr>
<td>ID</td>
<td>标题</td>
</tr>
<tr>
<td>1</td>
<td id="1">Hello</td>
</tr>
<tr>
<td>2</td>
<td id="2">WORLD</td>
</tr></table>怎样用jquery的ajax方法一次提交该表表格中的多行数据?
就是将 Hello 和 WORLD 提交到处理页?
当然这只是举个例子,如果有很多行的话,比如5行6行,而且这个行数是不固定的,该怎么办?
<tr>
<td>ID</td>
<td>标题</td>
</tr>
<tr>
<td>1</td>
<td id="1">Hello</td>
</tr>
<tr>
<td>2</td>
<td id="2">WORLD</td>
</tr></table>怎样用jquery的ajax方法一次提交该表表格中的多行数据?
就是将 Hello 和 WORLD 提交到处理页?
当然这只是举个例子,如果有很多行的话,比如5行6行,而且这个行数是不固定的,该怎么办?
其核心就是重复提交表格数据,每一行代表一条数据,每成功提交一条....就从表格内删除一条,直至全部提交完毕. 还望你提点意建给我....我对这个稳定性不是很放心..但没办法,一直在用..//循环遍历提交表格内数据,直至入库单完成
function While_Sell_Send(){//首先检查表格的完整性,删除空行
Check_Table(); //应该只执行一次,如果这样他每次都会执行 有待改进var Table_List = document.getElementById("Products_List");if(Table_List.rows.length>0){
//alert(Table_List.rows.length);
var P_No = Table_List.rows[0].cells[0].innerText; //商品编号
var P_class = Table_List.rows[0].cells[2].innerText //商品类别
var P_Sum = Table_List.rows[0].cells[7].innerText; //本次入库的单个商品数量
var J_Money = parseInt(Table_List.rows[0].cells[6].innerText); //应收销售单价
var True_Money = parseFloat(Table_List.rows[0].cells[6].innerText)*discount; //实收销售单价
var Total_Money = Table_List.rows[0].cells[8].innerText; //单条商品的数量*单价的总额
var User_Card = document.getElementById("User_Card"); //会员卡号
var Staff_No = $("Staff_No"); //销售员工
var Insert_Products_Info = "P_No="+escape(P_No)+ "&P_class="+P_class+ "&P_Sum="+P_Sum+ "&J_Money=" +J_Money+ "&dis="+discount+ "&True_Money="+True_Money+ "&Total_Money="+Total_Money+ "&User_Card=" +escape(User_Card.value)+ "&Staff_No="+escape(Staff_No.value);var url = "Insert_Products.Asp?action=insert_sell&s="+escape(new Date().toString());Tao_send = Tao_ajax();
Tao_send.open("POST",url,true);
Tao_send.onreadystatechange=function(){
if(Tao_send.readyState==4){ //待完善各种状态 if(Tao_send.status==200){
var i=0;
var xml = Tao_send.responseXML
var Err_List = xml.getElementsByTagName("err");
var Err = Err_List[0].firstChild.nodeValue;
if(Err==0){
i=i++;
Table_List.deleteRow(0); //删除表格
While_Sell_Send(); //循环遍历提交数据
}
else if(Err==4){
var ErrMsg = xml.getElementsByTagName("errmsg")[0].firstChild.nodeValue;
alert('程序发生错误!\r 错误原因:'+ErrMsg+ '已成功提交'+i+'条数据!');
return
} }
else if(Tao_send.status==404){
alert("请求的页面不存在,请检查请求Url");
return;
} else if(Tao_send.status==500){
alert("服务器内部错误!");
return;
} else
{
alert("错误:"+Tao_send.statusText);
}
}
}Tao_send.setRequestHeader("content-type","application/x-www-form-urlencoded");//post方法时注意设置这个头
Tao_send.send(Insert_Products_Info);
}
else
{
document.getElementById("Card_Div").style.display="none";
document.getElementById("One_Div").removeNode(true);
document.getElementById("User_Card").value="";
Clear_value(); //调用清除函数
alert("所有商品入库成功!")
return;
}
}
可以把数据组成JSOn或者XML文件Post过去
我是用的XML,把数据放在Table里,然后把table的标签传到服务器然后当XMl来解析的var tbody=document.createElement("table");
for(var i=1,isCfm=false;i<tb.rows.length;i++) {
var txt=tb.rows[i].cells[1].firstChild;
var sel=tb.rows[i].cells[2].firstChild;
if(txt.value.replace(/\s/g,"")=='' ||sel.value=='0') {
if(!isCfm && (isCfm=confirm('还有数据未填写完整,确定要放弃未填写的模块吗?'))) {
continue;
}else if(!isCfm) {
easyUI.qtip(txt.value.replace(/\s/g,"")!=''?sel:txt,'请输入模块名称!');
return;
} else {
continue;
}
}
var tr=tbody.insertRow(i-1);
var td1=tr.insertCell(0);
td1.innerHTML=txt.value;
var td2=tr.insertCell(1);
td2.innerHTML=sel.value;
}
tbody.childNodes[0].setAttribute("name",txtTpl.value);
var url="handler/addtemplate.ashx";
easyUI.ajax.post(url,"op=insert&data="+tbody.innerHTML,false,function(xhr) {
if(xhr.responseText!='0') {
if(isPre) {
location.href="previewtemplate.aspx?tplID="+xhr.responseText;
} else {
alert("模板已保存");
location.href="edittemplate.aspx?op=edit&tplID="+xhr.responseText;
}
} else {
easyUI.msg('错误','模块保存失败,请稍候再试!',2);
}
},easyUI.onerror);
json 数据格式:[{id:'1',data:'Hello'},{id:'2',data:'World'}]
代码:
var jsonstr = "",temp="";
jsonstr+="[";
$("table>tr:first").nextAll().each(function(){
temp+="{id:"+ $(this).find("td").eq(0).html();
temp+= ",data:"+$(this).find("td").eq(1).html()+"},";
})
if(temp.length>0)
temp=temp.substr(0,temp.length-1);
jsonstr+="]";把json格式的字符串数据post到服务器中再做处理。