比如有一表格,其代码为<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行,而且这个行数是不固定的,该怎么办?

解决方案 »

  1.   

    我的项目里有这样的实例.但我没使用jquery,我把核心的js贴给你.希望对你有帮助
    其核心就是重复提交表格数据,每一行代表一条数据,每成功提交一条....就从表格内删除一条,直至全部提交完毕.  还望你提点意建给我....我对这个稳定性不是很放心..但没办法,一直在用..//循环遍历提交表格内数据,直至入库单完成
    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;
    }
    }
      

  2.   

    jquery的ajax能传json吗?把内容转换成json传过去
      

  3.   

    正解
    可以把数据组成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);
      

  4.   

    json 是目前用的比较多的方案
      

  5.   


    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到服务器中再做处理。