मुझे यकीन नहीं है कि यह भी संभव है। लेकिन मैं सोच रहा था कि क्या किसी को पता है कि हाइपरलिंक कैसे बनाया जा सकता है कुछ चर और GET के विपरीत POST (एक फार्म की तरह) का उपयोग करें।
मुझे यकीन नहीं है कि यह भी संभव है। लेकिन मैं सोच रहा था कि क्या किसी को पता है कि हाइपरलिंक कैसे बनाया जा सकता है कुछ चर और GET के विपरीत POST (एक फार्म की तरह) का उपयोग करें।
जवाबों:
आप छिपे हुए इनपुट्स के साथ एक फॉर्म बनाते हैं, जो पोस्ट किए जाने वाले मानों को रखते हैं, फॉर्म की कार्रवाई को गंतव्य यूआरएल पर सेट करते हैं , और फॉर्म विधि पोस्ट करने के लिए । फिर, जब आपका लिंक क्लिक किया जाता है, तो एक जेएस फ़ंक्शन को ट्रिगर करें जो फ़ॉर्म को सबमिट करता है।
एक उदाहरण के लिए यहाँ देखें । यह उदाहरण शुद्ध जावास्क्रिप्ट का उपयोग करता है, जिसमें कोई jQuery नहीं है - आप इसे चुन सकते हैं यदि आप अपने पास पहले से अधिक कुछ भी स्थापित नहीं करना चाहते हैं।
<form name="myform" action="handle-data.php" method="post">
<label for="query">Search:</label>
<input type="text" name="query" id="query"/>
<button>Search</button>
</form>
<script>
var button = document.querySelector('form[name="myform"] > button');
button.addEventListener(function() {
document.querySelector("form[name="myform"]").submit();
});
</script>
GET
? हम get
फार्म के बिना था , है ना?
इसके लिए आपको जावास्क्रिप्ट की आवश्यकता नहीं है। बस यह स्पष्ट करना चाहता था कि जब से यह उत्तर पोस्ट किया गया था, तब से इस प्रश्न के सभी उत्तर किसी न किसी तरह से जावास्क्रिप्ट का उपयोग करते हैं।
आप इसे आसानी से शुद्ध एचटीएमएल और सीएसएस के साथ आसानी से कर सकते हैं, जिसमें छिपे हुए फ़ील्ड के साथ एक फॉर्म बना सकते हैं, जिसमें वह डेटा है जिसे आप सबमिट करना चाहते हैं, फिर लिंक की तरह दिखने के लिए फॉर्म के सबमिट बटन को स्टाइल करें।
उदाहरण के लिए:
.inline {
display: inline;
}
.link-button {
background: none;
border: none;
color: blue;
text-decoration: underline;
cursor: pointer;
font-size: 1em;
font-family: serif;
}
.link-button:focus {
outline: none;
}
.link-button:active {
color:red;
}
<a href="some_page">This is a regular link</a>
<form method="post" action="some_page" class="inline">
<input type="hidden" name="extra_submit_param" value="extra_submit_value">
<button type="submit" name="submit_param" value="submit_value" class="link-button">
This is a link that sends a POST request
</button>
</form>
आपकी साइट पर नियमित लिंक कैसे स्टाइल किए जाते हैं, इस पर निर्भर करते हुए आपके द्वारा उपयोग किए जाने वाले सटीक CSS भिन्न हो सकते हैं।
आप जावास्क्रिप्ट फ़ंक्शंस का उपयोग कर सकते हैं। JQuery का एक अच्छा पोस्ट फंक्शन है जिसमें आप इसका उपयोग करने का निर्णय लेते हैं:
<script language="javascript">
function DoPost(){
$.post("WhateverPage.php", { name: "John", time: "2pm" } ); //Your values here..
}
</script>
<a href="javascript:DoPost()">Click Here</A>
$.post('page.php', {param: 1}, function() { window.location.href = 'page'.php' });
<a href="whyjavascript.html" id="postIt">Click Here</a>
हैं$("#postIt").on("click",function(e) { e.preventDefault(); $.post("WhateverPage.php", { name: "John", time: "2pm" } ); });
यह एक पुराना प्रश्न है, लेकिन कोई भी उत्तर अनुरोध को पूर्णता से संतुष्ट नहीं करता है। इसलिए मैं एक और उत्तर जोड़ रहा हूं।
अनुरोधित कोड, जैसा कि मैं समझता हूं, सामान्य हाइपरलिंक के काम करने के तरीके में केवल एक बदलाव POST
करना चाहिए : विधि का उपयोग इसके बजाय किया जाना चाहिए GET
। तत्काल प्रभाव होगा:
href
POST
मैं यहां jquery का उपयोग कर रहा हूं, लेकिन यह देशी एपिस (कठिन और लंबे समय तक) के साथ किया जा सकता है।
<html>
<head>
<script src="path/to/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$("a.post").click(function(e) {
e.stopPropagation();
e.preventDefault();
var href = this.href;
var parts = href.split('?');
var url = parts[0];
var params = parts[1].split('&');
var pp, inputs = '';
for(var i = 0, n = params.length; i < n; i++) {
pp = params[i].split('=');
inputs += '<input type="hidden" name="' + pp[0] + '" value="' + pp[1] + '" />';
}
$("body").append('<form action="'+url+'" method="post" id="poster">'+inputs+'</form>');
$("#poster").submit();
});
});
</script>
</head>
<body>
<a class="post" href="reflector.php?color=blue&weight=340&model=x-12&price=14.800">Post it!</a><br/>
<a href="reflector.php?color=blue&weight=340&model=x-12&price=14.800">Normal link</a>
</body>
</html>
और परिणाम देखने के लिए, परावर्तक के रूप में निम्न को सहेजें। उसी निर्देशिका में जो आपने ऊपर सहेजी है।
<h2>Get</h2>
<pre>
<?php print_r($_GET); ?>
</pre>
<h2>Post</h2>
<pre>
<?php print_r($_POST); ?>
</pre>
एक और काम करने वाला उदाहरण, इसी तरह के दृष्टिकोण का उपयोग करके: एक HTML फॉर्म बनाएं, पोस्ट का अनुकरण करने के लिए जावास्क्रिप्ट का उपयोग करें। यह 2 चीजें करता है: एक नए पृष्ठ पर डेटा पोस्ट करें और इसे एक नई विंडो / टैब में खोलें।
एचटीएमएल
<form name='myForm' target="_blank" action='newpage.html' method='post'>
<input type="hidden" name="thisIsTheParameterName" value="testDataToBePosted"/>
</form>
जावास्क्रिप्ट
document.forms["myForm"].submit();
HTML + JQuery : एक लिंक जो POST के साथ एक छिपे हुए फॉर्म को जमा करता है।
चूंकि मैंने इन सभी उत्तरों को समझने के लिए बहुत समय बिताया है, और चूंकि इन सभी में कुछ दिलचस्प विवरण हैं, यहां संयुक्त संस्करण है जो आखिरकार मेरे लिए काम करता है और जिसे मैं इसकी सादगी के लिए पसंद करता हूं।
मेरा दृष्टिकोण फिर से एक छिपा हुआ रूप बनाने और पृष्ठ में कहीं और लिंक पर क्लिक करके प्रस्तुत करने के लिए है। इससे कोई फर्क नहीं पड़ता कि पेज के मुख्य भाग में फॉर्म कहाँ रखा जाएगा।
फॉर्म के लिए कोड:
<form id="myHiddenFormId" action="myAction.php" method="post" style="display: none">
<input type="hidden" name="myParameterName" value="myParameterValue">
</form>
विवरण:
रूप को display: none
छिपाता है। आप इसे वैकल्पिक रूप से एक div या किसी अन्य तत्व में डाल सकते हैं और तत्व को सेट कर सकते हैं display: none
।
type="hidden"
एक fild कि नहीं दिखाया जाएगा पैदा करेगा लेकिन इसकी डेटा कार्रवाई eitherways (करने के लिए प्रसारित किया जाएगा W3C देख )। मैं समझता हूं कि यह सबसे सरल इनपुट प्रकार है।
लिंक के लिए कोड:
<a href="" onclick="$('#myHiddenFormId').submit(); return false;" title="My link title">My link text</a>
विवरण:
खाली href
बस एक ही पृष्ठ को लक्षित करता है । लेकिन यह इस मामले में वास्तव में मायने नहीं रखता है क्योंकि return false
लिंक के अनुसरण से ब्राउज़र को रोक देगा। आप इस व्यवहार को बदलना चाह सकते हैं। मेरे विशिष्ट मामले में, कार्रवाई में अंत में पुनर्निर्देशन शामिल था।
onclick
का उपयोग कर से बचने के लिए इस्तेमाल किया गया था href="javascript:..."
के रूप में mplungjan द्वारा नोट । $('#myHiddenFormId').submit();
(बजाय एक समारोह को परिभाषित करने की, के बाद से कोड बहुत छोटा है) प्रपत्र प्रस्तुत करने के लिए इस्तेमाल किया गया था।
यह लिंक बिल्कुल किसी अन्य <a>
तत्व की तरह दिखेगा । आप वास्तव में इसके बजाय किसी अन्य तत्व का उपयोग कर सकते हैं <a>
(उदाहरण के लिए एक <span>
या एक छवि)।
आप इस jQuery फ़ंक्शन का उपयोग कर सकते हैं
function makePostRequest(url, data) {
var jForm = $('<form></form>');
jForm.attr('action', url);
jForm.attr('method', 'post');
for (name in data) {
var jInput = $("<input>");
jInput.attr('name', name);
jInput.attr('value', data[name]);
jForm.append(jInput);
}
jForm.submit();
}
यहाँ एक उदाहरण है jsFiddle ( http://jsfiddle.net/S7zUm/ )
जैसा कि कई पोस्टों में उल्लेख किया गया है, यह सीधे संभव नहीं है, लेकिन एक आसान और सफल तरीका इस प्रकार है: सबसे पहले, हमने अपने html पेज की बॉडी में एक फॉर्म डाला, जिसमें सबमिट के लिए कोई बटन नहीं है, और इसके इनपुट भी छिपे हुए हैं। फिर हम डेटा प्राप्त करने के लिए एक जावास्क्रिप्ट फ़ंक्शन का उपयोग करते हैं और, फॉर्म भेजते हैं। इस पद्धति के फायदों में से एक अन्य पृष्ठों पर पुनर्निर्देशित करना है, जो सर्वर-साइड कोड पर निर्भर करता है। कोड इस प्रकार है: और अब कहीं भी आपको "POST" विधि में होने की आवश्यकता है:
<script type="text/javascript" language="javascript">
function post_link(data){
$('#post_form').find('#form_input').val(data);
$('#post_form').submit();
};
</script>
<form id="post_form" action="anywhere/you/want/" method="POST">
{% csrf_token %}
<input id="form_input" type="hidden" value="" name="form_input">
</form>
<a href="javascript:{}" onclick="javascript:post_link('data');">post link is ready</a>
मैं एक और अधिक गतिशील दृष्टिकोण का सुझाव देता हूं, पृष्ठ में HTML कोडिंग के बिना, इसे सख्ती से जेएस रखें:
$("a.AS-POST").on('click', e => {
e.preventDefault()
let frm = document.createElement('FORM')
frm.id='frm_'+Math.random()
frm.method='POST'
frm.action=e.target.href
document.body.appendChild(frm)
frm.submit()
})
जावास्क्रिप्ट का उपयोग करने के बजाय, आप एक छिपे हुए फ़ॉर्म को भेजने वाले लेबल का भी उपयोग कर सकते हैं। बहुत ही सरल और छोटा सा उपाय। लेबल आपके html में कहीं भी हो सकता है।
<form style="display: none" action="postUrl" method="post">
<button type="submit" id="button_to_link"> </button>
</form>
<label style="text-decoration: underline" for="button_to_link"> link that posts </label>
इसकी जाँच करें यह आपकी मदद करेगा
$().redirect('test.php', {'a': 'value1', 'b': 'value2'});