本文将要介绍如何在HTTP编程中,get和post两个关键字的混合用法,希望通过本文,能对关键字的最大长度以及功能有所了解。
问题来源于get和post的特点和限制。对于get请求,我们可以很方便的使用window.opener的方式与父页面进行通讯,但是根据http协议的规定,url最大长度是2083个字节,可以用于GET传递数据的长度是2048个字节。对于post请求,虽然没有最大长度的限制,却不能方便的使用window.opener与父页面进行通讯。
关于如何使用javascript自动将一段get请求转变成一个post请求,网上有很多的方法,其主要思想就是动态构造一个iframe,并将get请求中的url参数值赋给input控件,最后设置form的action地址并调用submit方法。
园子里有人已经给出一个解决方法,http://www.cnblogs.com/ppchen/archive/2008/03/18/1109607.html
这里转载如下:
- Code
- var PostNewWin = function(url){
- var urlurlArr = url.split("?");
- var postUrl = urlArr[0];
- var postData = urlArr[1];
- var iframe = document.getElementById("postData_iframe");
- if(!iframe){
- iframe = document.createElement("iframe");
- iframe.id = "postData_iframe";
- iframe.scr= "about:blank";
- iframe.frameborder = "0";
- iframe.style.width = "0px";
- iframe.style.height = "0px";
- var form = document.createElement("form");
- form.id = "postData_form";
- form.method = "post";
- form.target = "_blank";
- document.body.appendChild(iframe);
- iframe.contentWindow.document.write("" + form.outerHTML + "");
- }
- iframe.contentWindow.document.getElementById("postData_form").innerHTML = "/>";
- iframe.contentWindow.document.getElementById("postData_form").action = postUrl;
- iframe.contentWindow.document.getElementById("postData_form").submit();
- };
例如原来有一个函数,使用get请求打开新页面
- function openNewWindow()
- {
- var url = http://www.website.com/page1.aspx?p1=v1&p2=v2;
- var win =window.open(url);
- }
因为ur的长度问题,现在改为使用post方式提交,如下所示:
- function openNewWindow()
- {
- var url = http://www.website.com/page1.aspx?p1=v1&p2=v2;
- //var win =window.open(url);
- PostNewWin(url);
- }
这里有一个问题就是,使用这种方式后,就无法使用window.opener与父页面进行交互了,因为通过这个函数,已经将get请求变成一个post请求了。为了可以使用post的方式提较大数据,同时也可以使用window.open(url)方式的window.opener与父页面通讯,在这里做一点小的改版,首先使用window.open(url)时候,增加一个参数,指定打开窗口的名称,,如下所示:
- function openNewWindow()
- {
- var url = http://www.website.com/page1.aspx?p1=v1&p2=v2;
- var winName = "";
- var win =window.open("about:blank",winName );
- PostNewWin(url,winName);
- }
- 同时修改PostNewWin函数,将这个新窗口的句柄传递给这个函数,将post请求的target设置为这个参数,如下所示:
- var PostNewWin = function(url,winName){
- .........
- form.target = winName;
- .......
- };
这样就可以同时使用post和get两种方式的优点了。
网站名称:浅析get和post在HTTP编程中的使用方式
网页路径:http://www.shufengxianlan.com/qtweb/news16/422666.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联