不用form,改用xmlhttp应该就简单多了!

解决方案 »

  1.   

    <script language="javascript">
    var iStr = new Array(5)
    var str
    functon fire(){ 
    str = form1.texta.value
    str = str.split(/\n/g)
    iStr[0] = str[0]+"\n"+str[1]
    iStr[1] = str[2]+"\n"+str[3]
    iStr[2] = str[4]+"\n"+str[5]
    iStr[3] = str[6]+"\n"+str[7]
    iStr[4] = str[8]+"\n"+str[9]
    sent(0)
    }
    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")function sent(n){
        xmlhttp.open("POST","test.asp",false)
        xmlhttp.setRequestHeader("ContentiType","application/x-www-form-urlencoded")
        xmlhttp.send("content="+iStr[n])
        if (xmlhttp.readyState==4){
            var infor = xmlhttp.responseText
            if (infor=="success"){
                  if(n!=iStr.length-1) sent(n+1)
                  else alert('全部提交完毕!')
            }else{
                  sent(n)
            }
    }
    </script>
    <form name="form1">
    <textarea name="texta"></textarea>
    <input type="button" onclick="fire()">
    </form>
    ***********************
    test.asp
    <%
    dim content
    content = request.form("content")
    if content<>"" then
        '操作你的数据库……
        if 操作成功 then
             response.write "success"
        else
             response.write "fail"
        end if
    end if
    %>
      

  2.   

    既然让用户确定话,那么在sent操作里加个confirm就可以了
    confirm判断语句放在if(n!=iStr.length-1)条件里
      

  3.   

    如果不用confirm,那就用innerHTML来控制button按钮,把button放在<div>里,然后用div的innerHTML属性重写button,改语句也放在if(n!=iStr.length-1)条件里
      

  4.   

    to allforly(白衣胜血) 
    请给源码,谢谢!
      

  5.   

    to allforly(白衣胜血) 
    按照你写的做了,报错:
    33行,也就是:<input type="button" onclick="fire()">缺少对象,
    怎么回事?
      

  6.   

    javascript定义数组实现发送队列
    用xmlhttp..
    如果使用纯粹的javascript的循环实现,容易导致死锁(因为javascript实际的解释过程是由单个线程完成,无法等待同步事件)
    通过xmlhttp的事件回调处理发送状态的判断和队列的处理.
      

  7.   

    <script language="javascript">
    var iStr = new Array(5)
    var str
    functon fire(){ 
    str = form1.texta.value
    str = str.split(/\n/g)
    iStr[0] = str[0]+"\n"+str[1]
    iStr[1] = str[2]+"\n"+str[3]
    iStr[2] = str[4]+"\n"+str[5]
    iStr[3] = str[6]+"\n"+str[7]
    iStr[4] = str[8]+"\n"+str[9]
    sent(0)
    }
    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")function sent(n){
        xmlhttp.open("POST","test.asp",false)
        xmlhttp.setRequestHeader("ContentiType","application/x-www-form-urlencoded")
        xmlhttp.send("content="+iStr[n])
        if (xmlhttp.readyState==4){
            var infor = xmlhttp.responseText
            if (infor=="success"){
                  if(n!=iStr.length-1){
                        hint.innerHTML = '<input type="button" value="确定提交下一小数据么" onclick="sent('+n+1+')">'
                  }
                  else alert('全部提交完毕!')
            }else{
                  sent(n)
            }
        }//开始这里漏了个括号了:)
    }
    </script>
    <form name="form1">
    <textarea name="texta"></textarea>
    <div id="hint"><input type="button" onclick="fire()"></div>
    </form>
    ***********************
    test.asp
    <%
    dim content
    content = request.form("content")
    if content<>"" then
        '操作你的数据库……
        if 操作成功 then
             response.write "success"
        else
             response.write "fail"
        end if
    end if
    %>
      

  8.   

    to allforly(白衣胜血) 
    谢谢你的代码。可是错误依旧,还是:<div id="hint"><input type="button" onclick="fire()"></div>缺少对象,你在你的机器上试试好吗?
      

  9.   

    <div id="hint"><input type="button" onclick="return fire();"></div>
      

  10.   

    果然进入了死循环,现在没问题了
    <script language="javascript">
    var iStr = new Array(5)
    var str
    function fire(){ 
    str = form1.texta.value
    str = str.split(/\n/g)
    iStr[0] = str[0]+"\n"+str[1]
    iStr[1] = str[2]+"\n"+str[3]
    iStr[2] = str[4]+"\n"+str[5]
    iStr[3] = str[6]+"\n"+str[7]
    iStr[4] = str[8]+"\n"+str[9]
    sent(0)
    }
    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")function sent(n){
        xmlhttp.open("POST","http://localhost/test.asp",false)
        xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
        xmlhttp.send("content="+iStr[n])
        if (xmlhttp.readyState==4){
            var infor = xmlhttp.responseText
            if (infor=="success"){
                  if(n!=iStr.length-1){
                        hint.innerHTML = '<input type="button" value="确定提交下一条数据么" onclick="sent('+(n+1)+')">'
                  }
                  else alert('全部提交完毕!')
            }else{
                  hint.innerHTML = '<input type="button" value="数据提交失败,重新提交" onclick="sent('+n+')">'
            }
        }
    }
    </script>
    <form name="form1">
    <textarea name="texta" cols="80" rows="10"></textarea>
    <div id="hint"><input type="button" onclick="fire()" value="gogogo"></div>
    </form>
      

  11.   

    to abigfrog(☆★千年精灵★☆) 
    还是同样的错误!
      

  12.   

    这行 xmlhttp.send("content="+iStr[n]) 报错:指定资源下载失败。
    难道IE要装什么控件吗??
      

  13.   

    我是IE6,另外我的test.asp就是response.write "success" 这一句。
      

  14.   

    http://www.formo.net/test.asp
    源代码+演示
      

  15.   

    第一个问题解决了,我把 xmlhttp.open("POST","http://localhost/test.asp",false)换成本机的IP就可以了,新的问题是:
    test.asp里就response.write "success"这一句,可是程序总是 "数据提交失败,重新提交"怎么回事?好象xmlhttp.responseText
    没有得到ASP程序的输出呢!
      

  16.   

    能不能把上次已经提交的数据或者从<textarea>里删除,或者其他颜色显示,总之标识出来。容易吗?
      

  17.   

    我提交到的ASP程序,就是test.asp在别人的机器上,我不知道其源码,所以,我设计成这样:
    提交时打开一新窗口,<form target=_blank>,在该窗口里调用别人的程序,然后人工看看程序的结果,如果是成功的提交的话,就在第一个窗口里继续提交,否则重新提交.
      

  18.   

    http://www.formo.net/test.asp
    我在错误处理里加了条提示,你可以看到提交后的反馈
      

  19.   

    在别人的服务器上,你可以用indexof或者search函数获取对方页面里的唯一值来判断是否提交成功
      

  20.   

    xmlhttp返回的很多是乱码,你必须用二进制返回数据,然后解码才得到正确的字符,我加了解析二进制的函数bstr()在http://www.formo.net/test.asp
      

  21.   

    xmlhttp返回的很多是乱码,你必须用二进制返回数据,然后解码才得到正确的字符,我加了解析二进制的函数bstr()在http://www.formo.net/test.asp
      

  22.   

    xmlhttp返回的很多是乱码,你必须用二进制返回数据,然后解码才得到正确的字符,我加了解析二进制的函数bstr()在http://www.formo.net/test.asp