2008-10-04 3 views
12

के साथ jQuery का उपयोग करके ऑनक्लिएंटलक्लिक पोस्ट को वापस कैसे बना सकता हूं, मैं पोस्टबैक करने के लिए अद्यतन पैनल का उपयोग किये बिना अद्यतन पैनल पोस्टबैक को फिर से बनाना चाहता हूं। ऐसा करने के लिए सामान्य तरीका क्या है?मैं एपीपीनेट

उदाहरण के लिए, Stackoverflow पर, जब आप वोट देने या सवाल पर नीचे यह डेटाबेस को अद्यतन करने के लिए एक पोस्टबैक करता है और मुझे यकीन है कि वे एक अद्यतन पैनल का उपयोग नहीं किया।

मेरे पास क्या है?

मेरे पास तालिका डेटा वाला एक टेबल है। जब मैं पूरे कॉलम के रूप में td आइटम पर क्लिक करता हूं, तो मैं डेटाबेस में एक अद्यतन करना चाहता हूं और पृष्ठ पर ग्रिडव्यू भी अपडेट करना चाहता हूं। ग्रिडव्यू तालिका में मौजूद सभी मौजूदा क्लिक किए गए आइटम दिखाता है क्योंकि इसे "हमारी विधि" के माध्यम से अपडेट किया गया था।

एक अच्छा सामान्य विधि मैं अद्यतन पैनल के बिना async Postbacks का एक बहुत के लिए इस्तेमाल कर सकते हैं के लिए देख रहे हैं।

उत्तर

17

तरीका है कि स्टैक ओवरफ़्लो कि CodeProject लेख से दो महत्वपूर्ण मायनों में अलग है काम करता है।

  • स्टैक ओवरफ़्लो एक ASP.NET MVC नियंत्रक कार्रवाई, नहीं एक स्टैंडअलोन ASPX पेज खिलाफ अपनी AJAX अनुरोध कर रही है। आप इसे एएसपी.NET AJAX पृष्ठ विधि के एमवीसी एनालॉग के रूप में मान सकते हैं। दोनों मामलों में, प्रदर्शन के संदर्भ में एएसपीएक्स विधि पीछे रह जाएगी।

  • स्टैक ओवरफ़्लो की AJAX अनुरोध एक JSON धारावाहिक परिणाम, नहीं मनमाने ढंग से प्लेन टेक्स्ट या HTML देता है। यह इसे क्लाइंट पक्ष पर अधिक मानकीकृत और आम तौर पर क्लीनर पर रखता है।

उदाहरण के लिए: जब मैं इस सवाल को वोट किया है एक XmlHttpRequest अनुरोध एक पोस्ट डेटा में 2 की "voteTypeId" के साथ करने के लिए/प्रश्न/171,000/वोट, बनाया गया था।

नियंत्रक कि संभाला अनुरोध कहीं एक मेज पर अपने वोट जोड़ा और फिर इस JSON के साथ जवाब दिया:

:

{"Success":true,"NewScore":1,"Message":"","LastVoteTypeId":2} 

कि जानकारी का उपयोग करना, इस जावास्क्रिप्ट क्लाइंट साइड प्रदर्शन को अद्यतन करने का ख्याल रखता है

var voteResult = function(jClicked, postId, data) { 
    if (data.Success) { 
    jClicked.parent().find("span.vote-count-post").text(data.NewScore); 
    if (data.Message) 
     showFadingNotification(jClicked, data.Message); 
    } 
    else { 
    showNotification(jClicked, data.Message); 
    reset(jClicked, jClicked); 

    if (data.LastVoteTypeId) { 
     selectPreviousVote(jClicked, data.LastVoteTypeId); 
    } 
    } 
}; 

आप WebForms का उपयोग कर रहे हैं, तो पेज तरीकों कि आप अपने ब्लॉग पर पाया बुलाने की उदाहरण सही बॉलपार्क में निश्चित रूप से है।

हालांकि, मैं, सुझाव है कि आप किसी भी केंद्रीकृत कार्यक्षमता (इस मतदान के उदाहरण की तरह) के लिए एक वेब सेवा पर विचार के बजाय पेज तरीकों में से। पृष्ठ तरीकों लिखने के लिए थोड़ा आसान होने लगते हैं, लेकिन वे भी कुछ पुन: उपयोग कमियां हैं और अतिरिक्त सुरक्षा है कि वास्तव में वहाँ नहीं है का भ्रम प्रदान करने के लिए करते हैं।

यह एक ही बात आप पाया करने का एक उदाहरण है, लेकिन वेब सेवाओं के साथ (इस पोस्ट वास्तव में पोस्ट करने के लिए नेतृत्व पर टिप्पणी आप पाया जाता है):

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

+0

इसके लिए धन्यवाद ... मैं भी आपके ब्लॉग की सराहना करता हूं। –

+0

कोई समस्या नहीं है। आशा करता हूँ की ये काम करेगा। –

+0

मैं इस जवाब पर एक और बात व्यक्त करना चाहता हूँ। पृष्ठ विधियों का उपयोग करें यदि समाधान केंद्रीकृत सिस्टम के लिए नहीं है। –

2

आप इसे पूरा करने के लिए केवल एक मानक AJAX कॉल का उपयोग कर सकते हैं। एक .aspx पृष्ठ बनाएं जो डेटाबेस को अपनी पेज_लोड विधि में अपडेट करता है, और XML के रूप में किसी वांछित जानकारी (जैसे अद्यतन के बाद वर्तमान डीबी मान) प्रदर्शित करता है। फिर jQuery का उपयोग करके उस पृष्ठ पर AJAX कॉल करें।

तुम भी एक HTML टुकड़ा (अर्थात एक अद्यतन GridView) लौटने के लिए, और वर्तमान पृष्ठ में अपडेट किया हुआ HTML डालने के लिए jQuery का उपयोग कर सकते हैं।

संपादित करें: इस पृष्ठ पर नमूना 2 बहुत आप क्या चाहते हैं के करीब होना चाहिए:
http://www.codeproject.com/KB/ajax/AjaxJQuerySample.aspx

+0

तो इस तरह से Stackoverflow शायद है क्या यह? –

+1

डेव वार्ड का जवाब बताता है कि एसओ कैसे काम करता है। – AaronSieb

2

यह link मुझे क्या करना सबसे अच्छी बात हो सकता है और मुझे जावास्क्रिप्ट और वेब तरीकों का उपयोग करने के लिए अनुमति देने के लिए मिल गया है ।