如何将这段接收GET传值的代码,修改成接收POST传值,50分答谢

ZoarYang 2009-04-29 12:38:29
主要的GET的传值就是2个参数
第一个是 id
第二个是 p

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<%Response.Buffer=false%>
<%
var MM_qt_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ="+Server.MapPath("taobao.mdb")
var cmd = Server.CreateObject ("ADODB.Command");
cmd.ActiveConnection = MM_qt_STRING;
String.prototype.LTrim = function(){ return this.replace(/(^\s*)/g, ""); }
String.prototype.RTrim = function(){ return this.replace(/(\s*$)/g, ""); }
//=======================================
function getPage(id,p){
var p
if(String(Request.QueryString("p"))=="" || String(Request.QueryString("p"))=="undefined" || String(parseInt(Request.QueryString("p")))!=String(Request.QueryString("p"))){
p=1 }else{
p=parseInt(Request.QueryString("p"))
}
var xmlhttp = new ActiveXObject("Msxml2.ServerXMLHTTP");
var L="http://shop"+id+".xxx.com/"
var L2="&scid="
var tburl=L+p+L2
xmlhttp.open("GET", tburl, false);
xmlhttp.send();
var htm=xmlhttp.responseText;
var num=htm.substring(htm.indexOf("共搜索到")+12,htm.indexOf("个")-9)
Response.Write("共有<strong>"+num+"</strong>,每页20个约"+parseInt(num/20)+"页,当前第<strong>"+p+"</strong>页");
Session("num")=num
list(htm,p,num,id)
}
function list(htm,p,num,id){
var i=htm.indexOf("<ul class=\"shop-list\">")+23
var o=htm.indexOf("</ul>",i)-5
var str=htm.substring(i,o)
var t=0
for (n=0;n<20;n++){
i=str.indexOf("<a href=\"",t)+9
o=str.indexOf("\"",i)
var add=str.substring(i,o)
i=str.indexOf("<img src=\"",o)+10
o=str.indexOf("\"",i)
var img=str.substring(i,o)
i=str.indexOf("<strong>",o)+8
o=str.indexOf("</strong>",i)
var jg=str.substring(i,o)
i=str.indexOf("<h4>",o)+4
o=str.indexOf("</h4>",i)
var tit=str.substring(i,o)
var regEx = /<[^>]*>/g;
tit=tit.replace(regEx,"")
tit=tit.LTrim()
tit=tit.RTrim()
tit=tit.replace("\'","~")
tit=tit.replace("\"","~")
tit=tit.replace("#","~")
t=o
var neirongPage=getOnePage(add);
var i2=neirongPage.indexOf("<span>开始:</span>",0)+16
var o2=neirongPage.indexOf("</li>",i2)
var time=neirongPage.substring(i2,o2)
time=time.LTrim()
time=time.RTrim()
i2=neirongPage.indexOf("\"apiItemDesc\":\"",o2)+15
o2=neirongPage.indexOf("\",",i2)
var dz=neirongPage.substring(i2,o2)
var more=getOnePage(dz)
more=more.replace("var desc=\'","")
more=more.replace("\';","")
more=more.replace(/\'/g,"''")
more=more.replace(/\"/g,'""')
var ttt=wr(add,img,jg,tit,time,more)+tit+"</div>"
Response.Write(ttt)
}
if(parseInt(p)<parseInt(num/20)){
Response.Write("<meta http-equiv=\"refresh\" content=\"1;URL=xmlhttp.asp?id="+id+"&p="+(p+1)+"\" />")
Response.Write("正在跳转到下一页")
}else{
Session("num")=""
Response.Write("结束")}
}
function wr(add,img,jg,tit,time,more){
cmd.CommandText = "SELECT xxx";
cmd.Prepared = true;
var rs = cmd.Execute();
if(rs.BOF && rs.EOF){
cmd.CommandText="INSERT INTO xxx);"
cmd.Prepared = true;
rs=cmd.Execute()
return("<div>成功:")
}else{return("<div>已存在:")
}
}
var tbid=String(Request.QueryString("id"))
var p=String(Request.QueryString("id"))
var inpage=String(Session("num"))
if(tbid!="" && tbid!="undefined" && String(parseInt(tbid))==String(tbid) ){
getPage(tbid)}
function getOnePage(url){
var xmlhttp = new ActiveXObject("Msxml2.ServerXMLHTTP");
var tburl=url
xmlhttp.open("GET", tburl, false);
xmlhttp.send();
var htm=xmlhttp.responseText;
return(htm)
}
%>
...全文
357 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZoarYang 2009-04-29
  • 打赏
  • 举报
回复
自己顶一下,请教大家
ZoarYang 2009-04-29
  • 打赏
  • 举报
回复
感谢楼上朋友的回复,不过我把这个代码套用到我1楼的代码中去,无法正常翻页。。
我也已经按2楼的方法修改了
Request.QueryString
替换成:
Request.Form

可不可以麻烦朋友抽出一点时间,帮我看下1楼的代码,不胜感激
ZoarYang 2009-04-29
  • 打赏
  • 举报
回复
里面有段跳转页面的代码,也是GET方式的,如何修改成POST方式呢
if(parseInt(p)<parseInt(num/20)){
Response.Write("<meta http-equiv=\"refresh\" content=\"1;URL=xmlhttp.asp?id="+id+"&p="+(p+1)+"\" />")
Response.Write("正在跳转到下一页")
ZoarYang 2009-04-29
  • 打赏
  • 举报
回复
比如现在的id参数,只能指定一个,我想写成能从 一个列表中 依次抽取
比如
435345|||34534|||45645645|||1123123|||12312312

程序会从这个列表中,按顺序抽取,第一次是 435345,第二次是 34534,第三次是 45645645,抽取完毕后自动停止

恳请高手指教
lzj34 2009-04-29
  • 打赏
  • 举报
回复
给你一个思路具体如何改你看了就会明白的
Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别.

1、 get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

2、 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。

3、get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,因服务器的不同而异.

4、get安全性非常低,post安全性较高。

5、 <form method="get" action="a.asp?b=b">跟<form method="get" action="a.asp">是一样的,也就是说,method为get时action页面后边带的参数列表会被忽视;而<form method="post" action="a.asp?b=b">跟<form method="post" action="a.asp">是不一样的。

另外
Get请求有如下特性:它会将数据添加到URL中,通过这种方式传递到服务器,通常利用一个问号?代表URL地址的结尾与数据参数的开端,后面的参数每一个数据参数以“名称=值”的形式出现,参数与参数之间利用一个连接符&来区分。
Post请求有如下特性:数据是放在HTTP主体中的,其组织方式不只一种,有&连接方式,也有分割符方式,可隐藏参数,传递大批数据,比较方便。

通过以上的说明,现在我们大致了解了什么时候用get什么时候用post方式了吧,对!当我们在提交表单的时候我们通常用post方式,当我们要传送一个较大的数据文件时,需要用post。当传递的值只需用参数方式(这个值不大于2KB)的时候,用get方式即可。

现在我们再看看通过URL发送请求时,get方式和post方式的区别。用下面的例子可以很容易的看到同样的数据通过GET和POST来发送的区别, 发送的数据是 username=张三 :
GET 方式, 浏览器键入http://localhost?username=张三


GET /?username=%E5%BC%A0%E4%B8%89 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: localhost
Connection: Keep-Alive

POST 方式:

POST / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: localhost
Content-Length: 28
Connection: Keep-Alive

username=%E5%BC%A0%E4%B8%89

区别就是一个在 URL 请求里面附带了表单参数和值, 一个是在 HTTP 请求的消息实体中。

比较一下上面的两段文字, 我们会发现 GET 方式把表单内容放在前面的请求头中, 而 POST 则把这些内容放在请求的主体中了, 同时 POST 中把请求的 Content-Type 头设置为 application/x-www-form-urlencoded. 而发送的正文都是一样的, 可以这样来构造一个表单提交正文:
encodeURIComponent(arg1)=encodeURIComponent(value1)&encodeURIComponent(arg2)=encodeURIComponent(value2)&.....

注: encodeURIComponent 返回一个包含了 charstring 内容的新的 String 对象(Unicode 格式), 所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。 例如,空格返回的是 "%20" 。 字符的值大于 255 的用 %uxxxx 格式存储。参见 JavaScript 的 encodeURIComponent() 方法.

在了解了上面的内容后我们现在用ajax的XMLHttpRequest对象向服务器分别用GET和POST方式发送一些数据。

GET 方式
var postContent ="name=" + encodeURIComponent("xiaocheng") + "&email=" + encodeURIComponent("xiaochengf_21@yahoo.com.cn");
xmlhttp.open("GET", "somepage" + "?" + postContent, true);
xmlhttp.send(null);


POST 方式

var postContent ="name=" + encodeURIComponent("xiaocheng") + "&email=" + encodeURIComponent("xiaochengf_21@yahoo.com.cn");
xmlhttp.open("POST", "somepage", true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//xmlhttp.setRequestHeader("Content-Type", "text/xml"); //如果发送的是一个xml文件
xmlhttp.send(postContent);

ZoarYang 2009-04-29
  • 打赏
  • 举报
回复
就是传给现在这个文件的,,目前是get方式,不是很方便,我想做成post的
  • 打赏
  • 举报
回复
汗!一个

post传值是传给谁的?

你这个可改可不改
ZoarYang 2009-04-29
  • 打赏
  • 举报
回复
谢谢楼上的朋友,除了这个其他不用改吗?比如
xmlhttp.open("GET", tburl, false); 这些?
街头小贩 2009-04-29
  • 打赏
  • 举报
回复
Request.QueryString
替换成:
Request.Form
wcwtitxu 2009-04-29
  • 打赏
  • 举报
回复
if (parseInt(p)<parseInt(num/20)) {
%>
<form name="form998989" action="xmlhttp.asp" method="post">
<input type="hidden" name="id" value="<%=id%>"/>
<input type="hidden" name="p" value="<%=(p+1)%>"/>
</form>
<script>setTimeout("document.form998989.submit()", 1000)</script>
正在跳转到下一页
<%

// ...
}
ZoarYang 2009-04-29
  • 打赏
  • 举报
回复
自己顶上去,感谢所有看帖的朋友

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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