比较难的问题,所以我给的分也比较多:)

gshope 2003-01-02 01:44:41
在一个form里的<textarea>里有十行数据,我要把它每次两行向一个固定URL提交,如果提交成功了,就继续提交下面两行,如果不成功,则重复提交刚才的两行,直到数据都提交完了,提交成功与否可以是根据返回的页面内容人工决定,不是程序自动判定的。我觉得应该用javascript做,请大家帮忙想想办法。谢谢!
...全文
57 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
allforly 2003-01-02
  • 打赏
  • 举报
回复
xmlhttp返回的很多是乱码,你必须用二进制返回数据,然后解码才得到正确的字符,我加了解析二进制的函数bstr()在http://www.formo.net/test.asp
allforly 2003-01-02
  • 打赏
  • 举报
回复
xmlhttp返回的很多是乱码,你必须用二进制返回数据,然后解码才得到正确的字符,我加了解析二进制的函数bstr()在http://www.formo.net/test.asp
allforly 2003-01-02
  • 打赏
  • 举报
回复
xmlhttp返回的很多是乱码,你必须用二进制返回数据,然后解码才得到正确的字符,我加了解析二进制的函数bstr()在http://www.formo.net/test.asp
gshope 2003-01-02
  • 打赏
  • 举报
回复
我得到的反馈信息是对的,可以它还是"数据提交失败,重新提交",我再自己看看程序,虽然没最终解决,但是谢谢你,给你100分,谢谢!
allforly 2003-01-02
  • 打赏
  • 举报
回复
在别人的服务器上,你可以用indexof或者search函数获取对方页面里的唯一值来判断是否提交成功
allforly 2003-01-02
  • 打赏
  • 举报
回复
http://www.formo.net/test.asp
我在错误处理里加了条提示,你可以看到提交后的反馈
gshope 2003-01-02
  • 打赏
  • 举报
回复
我提交到的ASP程序,就是test.asp在别人的机器上,我不知道其源码,所以,我设计成这样:
提交时打开一新窗口,<form target=_blank>,在该窗口里调用别人的程序,然后人工看看程序的结果,如果是成功的提交的话,就在第一个窗口里继续提交,否则重新提交.
gshope 2003-01-02
  • 打赏
  • 举报
回复
能不能把上次已经提交的数据或者从<textarea>里删除,或者其他颜色显示,总之标识出来。容易吗?
gshope 2003-01-02
  • 打赏
  • 举报
回复
第一个问题解决了,我把 xmlhttp.open("POST","http://localhost/test.asp",false)换成本机的IP就可以了,新的问题是:
test.asp里就response.write "success"这一句,可是程序总是 "数据提交失败,重新提交"怎么回事?好象xmlhttp.responseText
没有得到ASP程序的输出呢!
allforly 2003-01-02
  • 打赏
  • 举报
回复
http://www.formo.net/test.asp
源代码+演示
gshope 2003-01-02
  • 打赏
  • 举报
回复
我是IE6,另外我的test.asp就是response.write "success" 这一句。
gshope 2003-01-02
  • 打赏
  • 举报
回复
这行 xmlhttp.send("content="+iStr[n]) 报错:指定资源下载失败。
难道IE要装什么控件吗??
gshope 2003-01-02
  • 打赏
  • 举报
回复
to abigfrog(☆★千年精灵★☆)
还是同样的错误!
allforly 2003-01-02
  • 打赏
  • 举报
回复
果然进入了死循环,现在没问题了
<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>
iStringTheory 2003-01-02
  • 打赏
  • 举报
回复
<div id="hint"><input type="button" onclick="return fire();"></div>
gshope 2003-01-02
  • 打赏
  • 举报
回复
to allforly(白衣胜血)
谢谢你的代码。可是错误依旧,还是:<div id="hint"><input type="button" onclick="fire()"></div>缺少对象,你在你的机器上试试好吗?
allforly 2003-01-02
  • 打赏
  • 举报
回复
<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
%>
yonghengdizhen 2003-01-02
  • 打赏
  • 举报
回复
javascript定义数组实现发送队列
用xmlhttp..
如果使用纯粹的javascript的循环实现,容易导致死锁(因为javascript实际的解释过程是由单个线程完成,无法等待同步事件)
通过xmlhttp的事件回调处理发送状态的判断和队列的处理.
gshope 2003-01-02
  • 打赏
  • 举报
回复
to allforly(白衣胜血)
按照你写的做了,报错:
33行,也就是:<input type="button" onclick="fire()">缺少对象,
怎么回事?
gshope 2003-01-02
  • 打赏
  • 举报
回复
to allforly(白衣胜血)
请给源码,谢谢!
加载更多回复(7)

87,996

社区成员

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

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