मैं पोस्ट डेटा के साथ रीडायरेक्ट कैसे कर सकता हूं?
नए पेज पर कैसे जाएं $_POST?
यह कैसे करना है? यह कैसे किया जाता है और क्यों किया जाएगा?
मैं पोस्ट डेटा के साथ रीडायरेक्ट कैसे कर सकता हूं?
नए पेज पर कैसे जाएं $_POST?
यह कैसे करना है? यह कैसे किया जाता है और क्यों किया जाएगा?
$_POSTचर है?
जवाबों:
एक JQuery प्लग-इन है जो बहुत कुछ पूरा करता है जो आप करने की कोशिश कर रहे हैं: https://github.com/mgalante/jquery.redirect/blob/master/jquery.redirect.js ।
JQuery और jquery.redirect.min.js प्लग-इन को शामिल करने के बाद, आप बस कुछ ऐसा कर सकते हैं:
$().redirect('demo.php', {'arg1': 'value1', 'arg2': 'value2'});
इसके बजाय नए JQuery संस्करणों पर निम्न कोड का उपयोग करें:
$.redirect('demo.php', {'arg1': 'value1', 'arg2': 'value2'});
उम्मीद है की यह मदद करेगा!
यहां एक छोटा सा फ़ंक्शन है जिसे आप jQuery का उपयोग करते हुए कहीं भी लागू किया जा सकता है।
var redirect = 'http://www.website.com/page?id=23231';
$.redirectPost(redirect, {x: 'example', y: 'abc'});
// jquery extend function
$.extend(
{
redirectPost: function(location, args)
{
var form = '';
$.each( args, function( key, value ) {
form += '<input type="hidden" name="'+key+'" value="'+value+'">';
});
$('<form action="'+location+'" method="POST">'+form+'</form>').appendTo('body').submit();
}
});
टिप्पणियों के अनुसार, मैंने अपने उत्तर पर विस्तार किया है:
// jquery extend function
$.extend(
{
redirectPost: function(location, args)
{
var form = $('<form></form>');
form.attr("method", "post");
form.attr("action", location);
$.each( args, function( key, value ) {
var field = $('<input></input>');
field.attr("type", "hidden");
field.attr("name", key);
field.attr("value", value);
form.append(field);
});
$(form).appendTo('body').submit();
}
});
.appendTo('body')मोबाइल उपकरणों के लिए जोड़ें ... उदाहरण: इस उत्तर के$('<form action="'+location+'" method="POST">'+form+'</form>').appendTo('body').submit(); आधार पर विचार
value=""विशेषता में डालने से पहले मूल्यों से बचता नहीं है । इस प्रकार यदि मान में उद्धरण शामिल हैं, तो यह काम नहीं करता है। समारोह को उसी के साथ प्रतिस्थापित किया जा सकता है जो अवगत कराने के बारे में पता है, जैसे यहाँ से: stackoverflow.com/a/5533477/1775065
क्यों न केवल कुछ छिपे हुए इनपुट के साथ एक फॉर्म बनाएं और इसे jQuery का उपयोग करके सबमिट करें? कार्य करना चाहिए :)
दस्तावेज़ / विंडो तैयार होने से पहले jQuery के लिए "विस्तार" जोड़ें:
$.extend(
{
redirectPost: function(location, args)
{
var form = '';
$.each( args, function( key, value ) {
form += '<input type="hidden" name="'+value.name+'" value="'+value.value+'">';
form += '<input type="hidden" name="'+key+'" value="'+value.value+'">';
});
$('<form action="'+location+'" method="POST">'+form+'</form>').submit();
}
});
उपयोग :
$.redirectPost("someurl.com", $("#SomeForm").serializeArray());
नोट: यह विधि खिचड़ी डाक फाइलों के लिए है।
मुझे लगता है कि यह ऐसा करने का सबसे अच्छा तरीका है!
<html>
<body onload="document.getElementById('redirectForm').submit()">
<form id='redirectForm' method='POST' action='/done.html'>
<input type='hidden' name='status' value='complete'/>
<input type='hidden' name='id' value='0u812'/>
<input type='submit' value='Please Click Here To Continue'/>
</form>
</body>
</html>
यह लगभग तात्कालिक होगा और उपयोगकर्ता कुछ भी नहीं देखेंगे!
यह पोस्ट किए गए डेटा के साथ रीडायरेक्ट करेगा
$(function() {
$('<form action="url.php" method="post"><input type="hidden" name="name" value="value1"></input></form>').appendTo('body').submit().remove();
});
}
.submit () फ़ंक्शन अपने आप url को सबमिट करता
है .remove () फ़ंक्शन सबमिट करने के बाद फ़ॉर्म को मारता है
इसके लिए स्पष्टीकरण की जरूरत है। क्या आपका सर्वर एक POST को संभाल रहा है जिसे आप कहीं और रीडायरेक्ट करना चाहते हैं? या क्या आप किसी अन्य पेज पर एक POST की उम्मीद कर रहे एक रेग्युलेटरी GET रिक्वेस्ट को रीडायरेक्ट करना चाहते हैं?
या तो आप इस मामले में कुछ कर सकते हैं:
var f = $('<form>');
$('<input>').attr('name', '...').attr('value', '...');
//after all fields are added
f.submit();
पॉप-अप ब्लॉकर्स से निपटने के लिए "यहां क्लिक करें यदि स्वचालित रूप से पुनर्निर्देशित नहीं किया गया है" तो यह एक अच्छा विचार है।
उपरोक्त उत्तर के समान, लेकिन अलग तरह से लिखा गया है।
$.extend(
{
redirectPost: function (location, args) {
var form = $('<form>', { action: location, method: 'post' });
$.each(args,
function (key, value) {
$(form).append(
$('<input>', { type: 'hidden', name: key, value: value })
);
});
$(form).appendTo('body').submit();
}
});
सिर्फ सबमिट के बजाय बटन का उपयोग क्यों न करें। बटन पर क्लिक करने से आप अपने ब्राउज़र को पुनर्निर्देशित करने के लिए एक उचित यूआरएल का निर्माण कर सकते हैं।
$("#button").click(function() {
var url = 'site.com/process.php?';
$('form input').each(function() {
url += 'key=' + $(this).val() + "&";
});
// handle removal of last &.
window.location.replace(url);
});
मैंने डेटा के साथ सबमिट करने के लिए json समाधान के साथ jquery.redirect.min.js सिर अनुभाग में एक साथ प्लगइन शामिल किया
<script type="text/javascript">
$(function () {
$('form').on('submit', function(e) {
$.ajax({
type: 'post',
url: 'your_POST_URL',
data: $('form').serialize(),
success: function () {
// now redirect
$().redirect('your_POST_URL', {
'input1': $("value1").val(),
'input2': $("value2").val(),
'input3': $("value3").val()
});
}
});
e.preventDefault();
});
});
</script>
फिर फॉर्म के तुरंत बाद मैंने जोड़ा
$(function(){
$( '#your_form_Id' ).submit();
});
एक छिपी हुई विधि = POST क्रिया = "http://example.com/vote" फ़ॉर्म को बनाएं और भरें, बजाय window.location के उपयोग के।
या
$('#inset_form').html(
'<form action="url" name="form" method="post" style="display:none;">
<input type="text" name="name" value="' + value + '" /></form>');
document.forms['form'].submit();
उपरोक्त समाधान "विस्तारित"लक्ष्य के साथ । किसी कारण से मुझे पोस्ट को _blank या किसी अन्य फ़्रेम पर पुनर्निर्देशित करने की संभावना की आवश्यकता थी:
$.extend(
{
redirectPost: function(location, args, target = "_self")
{
var form = $('<form></form>');
form.attr("method", "post");
form.attr("action", location);
form.attr("target", target);
$.each( args, function( key, value ) {
var field = $('<input></input>');
field.attr("type", "hidden");
field.attr("name", key);
field.attr("value", value);
form.append(field);
});
$(form).appendTo('body').submit();
}
});