जवाबों:
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 का उपयोग करें (निश्चित रूप से आप कुछ समान करने के लिए जावास्क्रिप्ट का उपयोग भी कर सकते हैं)
$("#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.hrefPOST डेटा पास करने में सक्षम नहीं है।
कुछ हद तक अधिक संतोषजनक जवाब: आप इस फ़ंक्शन का उपयोग अपने सभी फॉर्म डेटा को क्लोन करने और सबमिट करने के लिए कर सकते हैं।
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">है <form name="login">, तो सबमिट किया गया नाम होगा login_name। nameJoinerचर को किसी अन्य चीज़ से बदल सकते हैं _ताकि यह आपके इनपुट नामकरण योजना के साथ संघर्ष न करे।submitMe.submit();यह इतना सरल है
$.post({url: "som_page.php",
data: { data1: value1, data2: value2 }
).done(function( data ) {
$( "body" ).html(data);
});
});
मुझे अपने एप्लिकेशन का स्क्रीन लॉक बनाने के लिए इसे हल करना था जहां मुझे उपयोगकर्ता के रूप में संवेदनशील डेटा और वह यूआरएल जहां वह काम कर रहा था, पास करना था। फिर एक फ़ंक्शन बनाएं जो इस कोड को निष्पादित करता है
done()समारोह सेट मेंwindow.location.href
क्या आपने केवल स्थानीय / सत्र भंडारण का उपयोग करने पर विचार किया है? -या- आप जो निर्माण कर रहे हैं उसकी जटिलता पर निर्भर करता है; तुम भी indexDB का उपयोग कर सकते हैं।
नोट :
Local storageऔर indexDBसुरक्षित नहीं हैं - इसलिए आप इन दोनों में से किसी भी संवेदनशील / व्यक्तिगत डेटा (जैसे नाम, पते, ईमेल पते, डीओबी आदि) के भंडारण से बचना चाहते हैं।
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... y'know, सिर्फ kicks के लिए।
आप पास के बजाय GET का उपयोग कर सकते हैं, लेकिन महत्वपूर्ण मानों के लिए इस पद्धति का उपयोग न करें,
function passIDto(IDval){
window.location.href = "CustomerBasket.php?oridd=" + IDval ;
}
CustomerBasket.php में
<?php
$value = $_GET["oridd"];
echo $value;
?>
window.location.hrefनए URL के लिए GET अनुरोध करता है, POST के लिए नहीं।