Yanıtlar:
Kullanarak window.location.hrefPOST isteği göndermek mümkün değildir.
Yapmanız gereken, formiçinde veri alanları olan bir etiket actionoluşturmak, formun methodözniteliğini URL'ye ve özniteliği POST olarak ayarlamak ve ardından etiket submitüzerindeki yöntemi çağırmaktır form.
formaraya koyamaz mısın , her şey otomatik olarak birlikte gönderilir mi?
$("#myForm").submit(). Görünmez olacak ve yalnızca müşteri tarafındaki kodunuzdan değerler göndermek için kullanılacak, kullanıcı girdisi için kullanılmayacak olan form asla gösterilmeyecek veya başka bir şekilde kullanılmayacak ve sayfa yenilenecektir.
HTML'nize aşağıdaki gibi bir form ekleyin:
<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>
ve bu değerleri doldurmak için JQuery'yi kullanın (elbette benzer bir şey yapmak için javascript de kullanabilirsiniz)
$("#var1").val(value1);
$("#var2").val(value2);
Sonunda formu gönderin
$("#form").submit();
sunucu tarafında kontrol ederek gönderdiğiniz verileri alabilmelisiniz var1ve var2bunun nasıl yapılacağı, kullandığınız sunucu tarafı diline bağlıdır.
Şu dosyayı kullanın: "jquery.redirect.js"
$("#btn_id").click(function(){
$.redirect(http://localhost/test/test1.php,
{
user_name: "khan",
city : "Meerut",
country : "country"
});
});
});
Diğer cevaplarda da söylendiği gibi, window.location.href kullanarak POST isteği yapmanın bir yolu yoktur, bunu yapmak için bir form oluşturabilir ve hemen gönderebilirsiniz.
Bu işlevi kullanabilirsiniz:
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'});
Kısa cevap: hayır. window.location.hrefPOST verilerini geçiremez.
Biraz daha tatmin edici cevap: Bu işlevi tüm form verilerinizi klonlamak ve göndermek için kullanabilirsiniz.
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);istediğiniz üç formun her biri için yapın. <input name="email">in <form name="login">, gönderilen ad olacaktır login_name. nameJoinerDeğişkeni _, giriş adlandırma düzeninizle çakışmaması için başka bir şeye değiştirebilirsiniz .submitMe.submit();bu kadar basit
$.post({url: "som_page.php",
data: { data1: value1, data2: value2 }
).done(function( data ) {
$( "body" ).html(data);
});
});
Kullanıcı olarak hassas verileri ve çalıştığı url'yi iletmem gereken uygulamamın ekran kilidini açmak için bunu çözmem gerekiyordu. Ardından bu kodu çalıştıran bir işlev oluşturun
done()işlev setindewindow.location.href
Yalnızca Yerel / Oturum Depolamasını kullanmayı düşündünüz mü? -veya- Yaptığınız şeyin karmaşıklığına bağlı olarak; indexDB'yi bile kullanabilirsiniz.
not :
Local storageve indexDBgüvenli değildir - bu nedenle herhangi bir hassas / kişisel veriyi (örn. isimler, adresler, e-posta adresleri, DOB vb.) bunlardan herhangi birinde saklamaktan kaçınmak istersiniz.
Session Storage hassas herhangi bir şey için daha güvenli bir seçenektir, yalnızca öğeleri ayarlayan ve aynı zamanda tarayıcı / sekme kapatılır kapatılmaz temizlenen kaynak tarafından erişilebilir.
IndexDBbiraz daha karmaşıktır [ama çok daha fazla değil] ve 30MB noSQL databaseher tarayıcıda yerleşiktir (ancak kullanıcı tercih ederse temelde sınırsız olabilir) -> Google docs'u bir sonraki kullanışınızda, sizi DevTools -> uygulama -> IndexDB açın ve bir zirve yapın. [spoiler uyarısı: şifrelenmiştir].
Odaklanmak Localve Session Storage; bunların her ikisinin de kullanımı son derece basit:
// 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( );
Basitlik senin işin değilse -veya- belki yoldan çıkıp hep birlikte farklı bir yaklaşım denemek istiyorsun -> muhtemelen bir shared web worker... y''know, sadece eğlence için kullanabilirsin .
Geçiş yerine GET kullanabilirsiniz, ancak bu yöntemi önemli değerler için kullanmayın,
function passIDto(IDval){
window.location.href = "CustomerBasket.php?oridd=" + IDval ;
}
CustomerBasket.php'de
<?php
$value = $_GET["oridd"];
echo $value;
?>
window.location.href, yeni URL için POST değil GET isteğinde bulunur.