一个 asp.net 页面(在这里称之为 page1.aspx)在得到客户端请求并作一系列逻辑处理之后,需要重定向到另外一个页面(称之为 page2.jsp)中去,page2.jsp 是另外一个独立的系统,它在做完它的事情之后再会重定向到我的网站的一个页面(称之为 page3.aspx)。再在 page1.aspx 要传很多参数给 page2.jsp,所以决定用 post 方式,但是怎么才能够 Response.Redirect 时能过 post 方式把参数传给 page2.jsp 呢?谢谢!
调试欢乐多
这样可以吗
// 提交到jsp的命令flag, 可以在服务端改写该隐藏域来控制重定向。
if(document.all.hidCommandFlag.value == "1") {
document.forms[0].action = "http://xxxxxx/page2.jsp";
document.forms[0].submit();
}
}或者是你在服务端,用 WebRequest 直接请求jsp。
我想达到目的就行,不必非得用 Response.Redirect
kagad(kagad):
你说的这种方式就是 get,它最简单,但是我要传的参数可能会很多,而 http 的 get 方式有长度限制,太长了服务器可能不认,甚至出错fangxinggood(JustACoder):
你说的这个办法应该是在客户端做的吧,但是我需要在服务端做不少事情,并且很多逻辑处理只能在服务端才能完成的
Nick_Nick():
你的办法可以一试,明天上班的时候再试,哦不,应该说是今天了。
Response.Redirect("xinxi.aspx?EMNO_LEVEL="+str1+"&&"+"CLS_CODE="+str2+"&&"+"emno="+str3);
按你的提示试了一下,但是有一个问题不好办,那就是从 page1.aspx 送给 page2.jsp 的参数不是完全从客户端得到的,在 page1.aspx 中要添加并修改一些参数值,但是 Request.Form.Add 方法 调用时抛出异常说 Form 是只读的gOODiDEA(无语):
page3.aspx 是由运行在其它平台的 page2.jsp 重定向的,这个URL是从 page1.aspx传过去的参数决定的。按你的说法我真不知道怎么做。
要不然,你自己构造一个httpRequest,然后post到jsp?不过这样就太复杂了
///如果对于支持JS的网站系统,可以这样,在Page1.aspx用Form去Post,POST的地址为Page2.Jsp,然后通过Ajax一类的处理方式在客户端得到服务器处理后的数据再提交。
Response.Write("<form name=form1 action=checklogin.asp method=post>");
Response.Write("<input type=hidden name=check1 value=1>");
Response.Write("<input type=hidden name=username value='"+txtUserName.Text+"'>");
Response.Write("<input type=hidden name=password value='"+txtPassword.Text+"'>");
Response.Write("</form>");
Response.Write("<scr"+"ipt language='javascript'>form1.submit();</scr"+"ipt>");
我就是这么将asp.net和asp和起来用的,不知道能不能帮你呢?
想不到你也是这个问题啊
我也是的
刚还发了贴
我郁闷了一天
在MSDN中查的时候
觉得TRANFER挺好的
但是 哪个
IHttpHandler类还不很理解
郁闷
在page1.aspx服务端通过HttpWebRequest将数据传递给page2.jsp,然后获取page2.jsp的输出,返回给浏览器。方法二:
在page1.aspx服务端将所有需要post的数据生成一个form,然后直接用js提交。(Redirect方法其实也只是向浏览器返回一个302消息罢了)
比如生成如下的html:
<html><body><form><input name="name1" value="value1">...</form><script>document.forms[0].submit();</script></body></html>另:我记得Server.Transfer方法只能在本站内使用。
就是加入一个LinkButton,把上面的文字都删除,这样客户端脚本有这个控件,界面上还显示不出来。__doPostBack()第一个参数用它的clientID,第二个参数比较麻烦,需要装箱。
还有可以用xmlhttp
using MSXML2;
string url="xxxx";
MSXML2.XMLHTTP xmlhttp=new MSXML2.XMLHTTPClass();
xmlhttp.open("post",url,false,null,null);
xmlhttp.send("");
string valid=xmlhttp.responseText.ToString();