回答:
使用するwindow.location.href
ことは、POSTリクエストを送信することはできません。
form
データフィールドを含むタグを設定しaction
、フォームのmethod
属性をURLに、属性を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);
あなたが提出したい3つの形態の各々のために。 <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を使用できますが、重要な値にはこのメソッドを使用しないでください。
function passIDto(IDval){
window.location.href = "CustomerBasket.php?oridd=" + IDval ;
}
CustomerBasket.php
<?php
$value = $_GET["oridd"];
echo $value;
?>
window.location.href
は、POSTではなく、新しいURLに対してGETリクエストを行います。