我们在写a标签的href时,有的时候不希望被人看到我们提交的参数,这个时候有两种解决办法,一种是用ajax设置提交方式为post方式(如果已经在ajax方法中,需要使用ajax嵌套,这个时候需要在内层ajax中设置async:false,设置请求方式为同步),另外一种方法是在href的js方法中创建form表单提交,并设置提交形式为post,具体代码如下:
- <body>
- <a href="javascript:doPost("addStudent.action", {"name":"张三"})">提交</a>
- <script>
- function doPost(to, p) { // to:提交动作(action),p:参数
- var myForm = document.createElement("form");
- myForm.method = "post";
- myForm.action = to;
- for (var i in p){
- var myInput = document.createElement("input");
- myInput.setAttribute("name", i); // 为input对象设置name
- myInput.setAttribute("value", p[i]); // 为input对象设置value
- myForm.appendChild(myInput);
- }
- document.body.appendChild(myForm);
- myForm.submit();
- document.body.removeChild(myForm); // 提交后移除创建的form
- }
- </script>
- </body>
如果设置成JavaScript:function()的形式,这个时候target属性就会不起作用,原因是不同的浏览器对这两个属性的处理前后顺序不一致,这个时候想要解决的话有两种办法:
一、跳转href是一般跳转:
此时你只需要在href的js方法中定义a标签的target属性即可
二、如果是采取的form表单的post提交跳转方式:
此时可以在form表单中设置属性
myForm.target="—blank";
这时target属性才会生效。