window.open()使用post方式提交

  • Post author:
  • Post category:其他


转自:

http://aguu125.iteye.com/blog/1545737

一般

window.open 传参数都是用Get..方式..在url后面拼接参数…

有时候并不适用,如:

1)不想被看到参数信息

2)参数过长,get有限制会被截断

3)可能有中文编码问题

所以需要用post方式

方式一:

 

    1. function submitForm(){


    2. window.open(‘’,’newWin’,’width=400,height=500,scrollbars=yes’);


    3. form对象.submit();


    4. }


    5. <FORM name=form action=“YourActionFile.html” method=“post” target=“newWin”>




    6. </Form>

也可

 

    1. function openWindowWithPost(url,name,keys,values)


    2. {


    3. var newWindow = window.open(url, name);


    4. if (!newWindow)


    5. return false;


    6. var html = “”;


    7. html += “<html><head></head><body><form id=‘formid’ method=‘post’ action=‘“ + url + “‘>“;


    8. if (keys && values)


    9. {


    10. html += “<input type=‘hidden’ name=‘“ + keys + “‘ value=‘“ + values + “‘/>“;


    11. }


    12. html += “</form><script type=‘text/javascript’>document.getElementById(‘formid’).submit();”;


    13. html += “<\/script></body></html>“.toString().replace(/^.+?*|\(?=\/)|*.+?$/gi, “”);


    14. newWindow.document.write(html);


    15. return newWindow;


    16. }


方式二:

 

    1. <script>


    2. function openPostWindow(url, data, name)


    3. {


    4. var tempForm = document.createElement(“form”);


    5. tempForm.id=“tempForm1”;


    6. tempForm.method=“post”;


    7. //url


    8. tempForm.action=url;


    9. //open方法不能设置请求方式,一般网页的post都是通过form来实现的。


    10. //如果仅仅模拟form的提交方式,那么open方法里那种可设置窗体属性的参数又不能用。


    11. //最后想办法整了这么一个两者结合的方式,将form的target设置成和open的name参数一样的值,通过浏览器自动识别实现了将内容post到新窗口中


    12. tempForm.target=name;


    13. var hideInput = document.createElement(“input”);


    14. hideInput.type=“hidden”;


    15. //传入参数名,相当于get请求中的content=


    16. hideInput.name= “content”;


    17. //传入传入数据,只传递了一个参数内容,实际可传递多个。


    18. hideInput.value= data;


    19. tempForm.appendChild(hideInput);


    20. tempForm.attachEvent(“onsubmit”,function(){ openWindow(name); });


    21. document.body.appendChild(tempForm);


    22. tempForm.fireEvent(“onsubmit”);


    23. //必须手动的触发,否则只能看到页面刷新而没有打开新窗口


    24. tempForm.submit();


    25. document.body.removeChild(tempForm);


    26. }


    27. function openWindow(name)


    28. {


    29. window.open(‘about:blank’,name,‘height=400, width=400, top=0, left=0, toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes,location=yes, status=yes’);


    30. }


    31. </script>


推荐使用第二种方式,第一种方式有时候有问题