2009-11-10 16 views
13

मुझे पता है कि मैं jQuery और $.post() वाक्यविन्यास के साथ बैंड पोस्ट अनुरोध से बाहर कर सकता हूं। हालांकि, मुझे यह जानने में दिलचस्पी है कि jQuery के लिए पूरे पृष्ठ पर पोस्ट अनुरोध का कारण बनना संभव है (जैसे एक फॉर्म सबमिट किया जाता है) ताकि एक नया नया पृष्ठ लोड हो। क्या यह संभव है?

डोम में कोई फॉर्म तत्व नहीं है, इसलिए मैं form.submit() नहीं कर सकता।

+0

क्या 'myFormElement साथ कुछ गड़बड़ है। प्रस्तुत() '? या बेहतर अभी तक, जब उपयोगकर्ता सबमिट बटन पर क्लिक करता है, * बस ब्राउज़र को फॉर्म सबमिट करने दें, कोई जावास्क्रिप्ट आवश्यक नहीं है। –

+0

मैं उम्मीद कर रहा था कि डीओएम में एक फॉर्म के बिना ऐसा करने में सक्षम हो (उसी तरह से मैं डीओएम में किसी फॉर्म के बिना बैंड पोस्ट से बाहर कर सकता हूं)। लेकिन मुझे नहीं लगता। – UpTheCreek

+0

आपके पास वास्तव में '

' तत्व नहीं है? आपको उस प्रश्न में उल्लेख करना चाहिए। –

उत्तर

0

सुनिश्चित नहीं हैं कि अगर मैं अपने प्रश्न है, लेकिन अगर आप सिर्फ पोस्ट करने के बाद ग्राहक रीडायरेक्ट करना चाहते हैं, बस

jQuery.post(url, {}, function() { location.href = "somewhere_else.html"; }) 
+1

प्रकार - मेरा सामान्य मतलब पोस्ट के तहत, पोस्ट पैरामीटर सर्वर पर भेजे जाते हैं, और सर्वर एक HTML दस्तावेज़ के साथ प्रतिक्रिया करता है जो वर्तमान को बदल देता है। मैं JQuery के साथ एक ही काम करना चाहता हूं (इसलिए सर्वर पर सिर्फ एक पोस्ट, एक पोस्ट नहीं है और फिर एक अलग मिलता है, क्योंकि आपका उदाहरण मुझे लगता है)। – UpTheCreek

+0

ओह, आप उस पृष्ठ पर फ़ॉर्म (जावास्क्रिप्ट के बिना) क्यों पोस्ट नहीं करते हैं और तब से अनुरोध संभालते हैं? :) - मार्को 0 सेकंड पहले – Marco

+0

क्योंकि कोई फॉर्म नहीं है। – UpTheCreek

0

तरह $ .post की कॉलबैक फ़ंक्शन में ग्राहक प्रत्यक्ष मुझे लगता है कि आप कर रहे हैं डिफ़ॉल्ट व्यवहार को फिर से कार्यान्वित करने का प्रयास कर रहा है। बस ब्राउजर प्रदान करता है नियमित जमा तंत्र का उपयोग करें।

यदि आपको वास्तव में सर्वर पर सबमिट करने से पहले डेटा की जांच करने की आवश्यकता है, तो एक समारोह को ऑनसबमिट ईवेंट में बाध्य करें और अपने चेक करें, फिर या तो झूठी वापसी करके या सही वापसी करके सबमिट कार्रवाई को बाधित करें और ब्राउज़र को सभी को करने दें काम। क्या यह आपको सही प्रतीत होता है?

0

मैं निम्न उदाहरण का उपयोग किया है एकाधिक बटन धारावाहिक प्रपत्र डेटा प्रस्तुत करने के लिए, लेकिन विभिन्न विकल्पों, उदा अनुमति देने के लिए सहेजें और सहेजें & बंद करें। भले ही मैं धारावाहिक डेटा पोस्ट करने के लिए jQuery का उपयोग कर रहा हूं, पूरा पृष्ठ फिर से लोड हो जाता है क्योंकि मैं AJAX पोस्ट प्रतिक्रिया डेटा को "document.body" पर वापस भेज रहा हूं।

<form id="myform"> 
<button id="button1" type="button" onclick="submitButton(true,false)" name="save" value="save">Save</button> 
<button id="button1" type="button" onclick="submitButton(true,true)" name="close" value="close">Save and Close</button> 
</form> 

function submitButton(save,close) { 
    $.ajax({url:'page.asp', data:''+$('#myform').serialize()+'&save='+save+'&close='+close+'', 
    type: 'post', 
    success: function(data){$(document.body).html(data);} 
    }); 
} 

आपको एक फॉर्म तत्व की आवश्यकता नहीं है क्योंकि आप इसका उपयोग किसी भी तत्व के साथ कर सकते हैं जिसमें अद्वितीय आईडी है।

+0

टिप्पणी के जवाब में "तो सर्वर पर सिर्फ एक पोस्ट, एक पोस्ट नहीं और फिर एक अलग मिलता है" - यह विधि उस प्राप्त करती है। –

21

मैं इस सुविधा का उपयोग जब मैं डेटा भेजने के लिए की जरूरत है और डोम में फार्म की जरूरत नहीं है:

function postData(actionUrl, method, data) { 
    var mapForm = $('<form id="mapform" action="' + actionUrl + '" method="' + method.toLowerCase() + '"></form>'); 
    for (var key in data) { 
     if (data.hasOwnProperty(key)) { 
      mapForm.append('<input type="hidden" name="' + key + '" id="' + key + '" value="' + data[key] + '" />'); 
     } 
    } 
    $('body').append(mapForm); 
    mapForm.submit(); 
} 

और मैं इसे इस तरह कहते हैं:

var data= { 'property1': 666, 'property2': 'I am a boy' }; 
postData('http://urltopostdata.to', 'post', data); 
+2

यह मेरे लिए काम किया। यह सुनिश्चित करने के लिए .hasOwnProperty() का उपयोग करने के लिए धन्यवाद कि आप डेटा ऑब्जेक्ट से किसी प्रॉपर्टी का उपयोग कर रहे थे, प्रोटोटाइप नहीं (मुझे यह देखना था कि क्यों: http://stackoverflow.com/questions/684672/loop-through-javascript- वस्तु) –

संबंधित मुद्दे