Answers:
使用window.location.href它不可能发送POST请求。
您要做的是设置一个form带有数据字段的标签action,将表单的属性设置为URL,将method属性设置为POST,然后submit在form标签上调用方法。
form,那么所有内容都会自动发送到一起吗?
$("#myForm").submit()。该表单将是不可见的,仅用于从客户端代码提交值,而不用于用户输入,将永远不会显示或以其他方式使用,并且页面将被刷新。
将表单添加到您的HTML中,如下所示:
<form style="display: none" action="/the/url" method="POST" id="form">
<input type="hidden" id="var1" name="var1" value=""/>
<input type="hidden" id="var2" name="var2" value=""/>
</form>
并使用JQuery填充这些值(当然,您也可以使用javascript做类似的事情)
$("#var1").val(value1);
$("#var2").val(value2);
然后最后提交表格
$("#form").submit();
在服务器端,您应该能够通过检查var1和获取发送的数据var2,具体方法取决于您使用的服务器端语言。
使用此文件:“ jquery.redirect.js”
$("#btn_id").click(function(){
$.redirect(http://localhost/test/test1.php,
{
user_name: "khan",
city : "Meerut",
country : "country"
});
});
});
正如在其他答案中所说的那样,无法使用window.location.href发出POST请求,要执行此操作,您可以创建一个表单并立即提交。
您可以使用此功能:
function postForm(path, params, method) {
method = method || 'post';
var form = document.createElement('form');
form.setAttribute('method', method);
form.setAttribute('action', path);
for (var key in params) {
if (params.hasOwnProperty(key)) {
var hiddenField = document.createElement('input');
hiddenField.setAttribute('type', 'hidden');
hiddenField.setAttribute('name', key);
hiddenField.setAttribute('value', params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
}
postForm('mysite.com/form', {arg1: 'value1', arg2: 'value2'});
简短的回答:不。window.location.href无法传递POST数据。
更令人满意的答案:您可以使用此功能克隆所有表单数据并提交。
var submitMe = document.createElement("form");
submitMe.action = "YOUR_URL_HERE"; // Remember to change me
submitMe.method = "post";
submitMe.enctype = "multipart/form-data";
var nameJoiner = "_";
// ^ The string used to join form name and input name
// so that you can differentiate between forms when
// processing the data server-side.
submitMe.importFields = function(form){
for(k in form.elements){
if(input = form.elements[k]){
if(input.type!="submit"&&
(input.nodeName=="INPUT"
||input.nodeName=="TEXTAREA"
||input.nodeName=="BUTTON"
||input.nodeName=="SELECT")
){
var output = input.cloneNode(true);
output.name = form.name + nameJoiner + input.name;
this.appendChild(output);
}
}
}
}
submitMe.importFields(form_element);你们每个人要提交的三种形式。 <input name="email">in <form name="login">,则提交的名称将为login_name。 nameJoiner变量更改为其他变量,_以免与输入命名方案冲突。submitMe.submit();就这么简单
$.post({url: "som_page.php",
date: { data1: value1, data2: value2 }
).done(function( data ) {
$( "body" ).html(data);
});
});
我必须解决此问题,才能对应用程序进行屏幕锁定,在该应用程序中,我必须以用户身份传递敏感数据,并在他工作时传递url。然后创建一个执行此代码的函数
done()函数集中window.location.href
您是否考虑过仅使用本地/会话存储?-或-取决于要构建的内容的复杂性;您甚至可以使用indexDB。
注意:
Local storage并且indexDB不安全-因此您要避免在其中任何一个中存储任何敏感/个人数据(即姓名,地址,电子邮件地址,DOB等)。
Session Storage 对于任何敏感内容来说,这是一个更安全的选项,它只能由设置项目的来源访问,并且在关闭浏览器/选项卡后也会清除。
IndexDB[有点多(但不多得多)]复杂,并且30MB noSQL database内置在每个浏览器中(但如果用户选择使用,则基本上是无限的)->下次使用Google文档时,请打开DevTools->应用程序-> IndexDB并达到顶峰。[扰流板警报:已加密]。
关注Local和Session Storage; 这些都非常简单易用:
// To Set
sessionStorage.setItem( 'key' , 'value' );
// e.g.
sessionStorage.setItem( 'formData' , { name: "Mr Manager", company: "Bluth's Frozen Bananas", ... } );
// Get The Data
const fromData = sessionStorage.getItem( 'key' );
// e.g. (after navigating to next location)
const fromData = sessionStorage.getItem( 'formData' );
// Remove
sessionStorage.removeItem( 'key' );
// Remove _all_ saved data sessionStorage
sessionStorage.clear( );
如果简单不是您的事-或-也许您想走开路,一起尝试另一种方法->您可能会使用shared web worker...知道,只是为了踢球。
您可以使用GET而不是pass,但是不要对重要的值使用此方法,
function passIDto(IDval){
window.location.href = "CustomerBasket.php?oridd=" + IDval ;
}
在CustomerBasket.php中
<?php
$value = $_GET["oridd"];
echo $value;
?>
window.location.href对新URL(而不是POST)执行GET请求。