不要用AJAX。换别的方法吧。AJAX本来就不适合用来做表单提交

解决方案 »

  1.   

    什么都不用做,因为放那么多input,浏览器基本已经卡死了....
      

  2.   

    哈哈哈哈,笑死我了,几千万个INPUT,那还不噶屁啊?字符串的连接,参考我给你的另一个回复
    http://community.csdn.net/Expert/TopicView1.asp?id=5448715另外,在循环时,尽量这样写
    var els = document.form1.elements;
    for(var i = 0, l = els.length; i < l; i++)
    {
        //.....
    }
      

  3.   

    遇到这处情况最好的处理办法的把这些INPUT分页来放,搞个上一步、下一步的导航按钮。
    再说,这样对浏览者显得人性化一些,数据的校验也来得容易些。
      

  4.   

    不是问题的问题,几千的input,这样的页面能打得开吗,打开了也慢死了
      

  5.   

    最好还是post提交,否则,情况会比较惨
      

  6.   

    几千几万个?
    DDOS洪水攻击客户端?
    :o
      

  7.   

    matrixy 的var els = document.form1.elements;
    for(var i = 0, l = els.length; i < l; i++)
    {
        //.....
    }
    第一次见到:)for(var i = 0, l = els.length; i < l; i++)每次循环是不是都会进行一次赋值操作:l = els.length
    而影响速度??
      

  8.   

    每次循环是不是都会进行一次赋值操作:l = els.length
    -----
    ---答:不会。
    几千个input不算多,可能是自己的代码有问题,
      

  9.   

    每次循环是不是都会进行一次赋值操作:l = els.length
    -----
    ---答:不会。
    l = els.length 只是赋初始值。照你这么说。每次都i=0。那还循环什么
      

  10.   

    var els = document.form1.elements;
    for(var i = 0, l = els.length; i < l; i++)
    {
        //.....
    }
    //////////////////////////////////
    for循环的过程是这样的,假若语句如下
    for(A;B;C)D;
    A语句块为循环的初始化过程,然后进行B语句块,如果B语句块条件成立,则执行D,否则跳出,然后执行D里的语句块,然后再跳回B语句块,这个问题,华为的笔试题里就曾经有过.在这里之所以要这么写,因为在B这个条件判断的地方,如果用常量代替它的话会更好一些,以省得每次作判断时都要去取一次它的值,在java的for(int i = 0; i < list.size(); i++)这样的情况下更明显些,因为我也不知道JS的Array的length属性是怎么去获取的,是否是修改或的一个常量,这只是个习惯性的问题,曾在某某语言参考里也看到过推荐用该方法.
      

  11.   

    我的说法只是给个建议而己,但是事实上它确实能提高很大的效率,一个好习惯,而并非规定,shortway(您知道Javascript Tidiy吗?) 的回复我看都木看就回了.....-_-!!测试结果如下,确实很大的提高了效率,JS里,在取String.length属性时还做了运算的.
    var str = "...";
    document.write(str.length);
    var time = new Date();
    for(var i = 0, l = str.length; i < l; i++); // 1
    for(var i = 0; i < str.length; i++); // 2
    alert(new Date() - time);
    在这里,str的长度为142800,越长越能测出差距,如果只用第一个循环的话,那么耗时大约是62 - 78ms之间,而第二个循环的话,耗时在93-110ms之间,循环越大越明显,至于其它的,大家自己去发现吧...
      

  12.   

    Array.length是缓存后的变量  所以不用担心效率问题
      

  13.   

    不过确实存在二次寻址的问题 因为要先取出Array的地址再取length的地址
      

  14.   

    没有哪个客户愿意把几千几万个文本框都填完再提交,要不领导问起来不好说,领导问:小处,今天都干什么了啊? 答:填网页来着,因为死机白填了一次,不小心关了白填一次,我这刚想填第三次,已经下班了. 明天再说啊!!  于是领导晕倒!~~~按照需求处理代码,总有解决的办法.问题是死的,人是活的嘛
    比如,把用户操作过的text的值添加到array中,或对象中,然后遍历内存要比DOM快得多,更何况还有join("")方法可用.
      

  15.   

    所以说我不用AJAX来遍历所有INPUT,改用直接表单POST提交
      

  16.   

    var els = document.form1.elements;
    还包括页面上其他的控件
    换document.getElementsByTagName("input")