jQuery - पोस्ट डेटा के साथ रीडायरेक्ट


81

मैं पोस्ट डेटा के साथ रीडायरेक्ट कैसे कर सकता हूं?

नए पेज पर कैसे जाएं $_POST?

यह कैसे करना है? यह कैसे किया जाता है और क्यों किया जाएगा?


6
मैं वास्तव में इस जवाब को सुनने के लिए बहुत इच्छुक हूं।
स्टर्लिंग आर्चर

1
केवल POET अनुरोध के साथ Windows स्थान सेट करना संभव नहीं है, और केवल GST अनुरोधों को पुनर्निर्देशित करना संभव नहीं है, इसलिए सामान्य समाधान आवश्यक डेटा और क्रिया विशेषता के साथ एक प्रारूप बनाना और इसे प्रस्तुत करना है।
एडेनो

क्या आप PHP टैग को भूल रहे हैं, या jQuery के पास एक $_POSTचर है?
एलेक्स डब्ल्यू

@ y2k, क्या यह एक ही सवाल नहीं है जैसा कि stackoverflow.com/q/8389646/632951 ?
पचेरियर

जवाबों:


90

एक 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'});

उम्मीद है की यह मदद करेगा!


@ टिम, उस लिंक की जाँच करने के बाद, मैं अभी भी स्पष्ट नहीं हूँ कि आप पोस्ट का उपयोग करके नए पृष्ठ में डेटा कैसे प्राप्त कर सकते हैं।
येहुडा गुटस्टीन

कोई बात नहीं, मैंने इसे समझ लिया और काम पर लग गया। महान सुझाव!
येहुडा गुटस्टीन

<script type = "text / javascript"> $ ()। redirect (' localhost: 8080 / vabc / index.php # data / t.php? param = 12 & edit = 2 ', {'e:' error '}) ; काम नहीं करता मेरे पास कुछ अन्य पोस्ट वेरिएबल्स के साथ एक <फॉर्म> भी है जो पहले उसी पेज पर पोस्ट करते हैं और प्रोसेसिंग के बाद, मैं कुछ नए पोस्ट वेरिएबल्स के साथ एक अलग पेज पर रीडायरेक्ट करने के लिए jquery रीडायरेक्ट का उपयोग करता हूं।
टॉमी

19
Jquery का उपयोग 2.1.3 और मेरे लिए सही वाक्यविन्यास $ .redirect (...) था; बिना कोष्ठक के।
केडीटी

तो हम एक अलग यूआरएल और एक अलग> के लिए पोस्ट करने के लिए पुनर्निर्देशित नहीं कर सकते हैं?
टॉमी

90

यहां एक छोटा सा फ़ंक्शन है जिसे आप 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();
    }
});

9
.appendTo('body')मोबाइल उपकरणों के लिए जोड़ें ... उदाहरण: इस उत्तर के$('<form action="'+location+'" method="POST">'+form+'</form>').appendTo('body').submit(); आधार पर विचार
CrandellWS

4
यह समाधान स्वीकृत उत्तर imo से बहुत बेहतर है। इसे लागू करना आसान है और अतिरिक्त पुस्तकालयों को लोड करने की कोई आवश्यकता नहीं है!
मेटेज स्वैगर

3
मुझे $ .redirectPost मिलता है जब यह प्रयोग करने का प्रयास नहीं किया जाता है।
रफिकी

1
विस्तार के साथ महान विचार। लेकिन यह कार्यान्वयन उन्हें value=""विशेषता में डालने से पहले मूल्यों से बचता नहीं है । इस प्रकार यदि मान में उद्धरण शामिल हैं, तो यह काम नहीं करता है। समारोह को उसी के साथ प्रतिस्थापित किया जा सकता है जो अवगत कराने के बारे में पता है, जैसे यहाँ से: stackoverflow.com/a/5533477/1775065
cronfy

8

क्यों न केवल कुछ छिपे हुए इनपुट के साथ एक फॉर्म बनाएं और इसे jQuery का उपयोग करके सबमिट करें? कार्य करना चाहिए :)


Drag'n'drop फ़ाइल अपलोड के साथ काम नहीं करेगा। आप सुरक्षा कारणों से फ़ाइल इनपुट असाइन नहीं कर सकते।
एमटी

मैं किसी भी स्थिति के बारे में नहीं सोच सकता जब आप उपयोगकर्ता को कहीं और पुनर्निर्देशित करना चाहें और उन्हें उसी अनुरोध के साथ एक फ़ाइल अपलोड करें। लेकिन निश्चित रूप से - यह सच है, यह इस मामले में काम नहीं करेगा।
ko3991

@ एमएलटी मुझे यकीन नहीं है कि यह काम क्यों नहीं करेगा। आप फ़ाइल इनपुट के लिए कुछ भी निर्दिष्ट नहीं करते हैं, लेकिन आप अन्य इनपुट छिपे हुए फ़ील्ड का उपयोग करते हैं जो आपके फॉर्म के रूप में उसी समय पोस्ट किए जाते हैं।
Danosaure

3

दस्तावेज़ / विंडो तैयार होने से पहले 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());

नोट: यह विधि खिचड़ी डाक फाइलों के लिए है।


2

मुझे लगता है कि यह ऐसा करने का सबसे अच्छा तरीका है!

<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>

यह लगभग तात्कालिक होगा और उपयोगकर्ता कुछ भी नहीं देखेंगे!


2

यह पोस्ट किए गए डेटा के साथ रीडायरेक्ट करेगा

$(function() {
       $('<form action="url.php" method="post"><input type="hidden" name="name" value="value1"></input></form>').appendTo('body').submit().remove();
    });

    }

.submit () फ़ंक्शन अपने आप url को सबमिट करता
है .remove () फ़ंक्शन सबमिट करने के बाद फ़ॉर्म को मारता है


1

इसके लिए स्पष्टीकरण की जरूरत है। क्या आपका सर्वर एक POST को संभाल रहा है जिसे आप कहीं और रीडायरेक्ट करना चाहते हैं? या क्या आप किसी अन्य पेज पर एक POST की उम्मीद कर रहे एक रेग्युलेटरी GET रिक्वेस्ट को रीडायरेक्ट करना चाहते हैं?

या तो आप इस मामले में कुछ कर सकते हैं:

var f = $('<form>');
$('<input>').attr('name', '...').attr('value', '...');
//after all fields are added
f.submit();

पॉप-अप ब्लॉकर्स से निपटने के लिए "यहां क्लिक करें यदि स्वचालित रूप से पुनर्निर्देशित नहीं किया गया है" तो यह एक अच्छा विचार है।


1

उपरोक्त उत्तर के समान, लेकिन अलग तरह से लिखा गया है।

$.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();
    }
});

0

सिर्फ सबमिट के बजाय बटन का उपयोग क्यों न करें। बटन पर क्लिक करने से आप अपने ब्राउज़र को पुनर्निर्देशित करने के लिए एक उचित यूआरएल का निर्माण कर सकते हैं।

$("#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);
});

4
यह केवल सामान्य GET अनुरोध का कारण होगा क्योंकि url बदल रहा है। मूल प्रश्न POST अनुरोध करने का था।
pjotr_dolphin

0

मैंने डेटा के साथ सबमिट करने के लिए 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();
    });

नोट: इनपुट इनपुट होना चाहिए Ids नाम नहीं!
kpatrickos

0

एक छिपी हुई विधि = 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();

0

उपरोक्त समाधान "विस्तारित"लक्ष्य के साथ । किसी कारण से मुझे पोस्ट को _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();
       }
   });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.