2010-05-11 8 views
16

मेरे पास मेरे डेटाबेस में एक कॉलम है जिसे यादृच्छिक रूप से अपडेट किया जाएगा। जब भी वह कॉलम अपडेट किया जाता है तो मुझे अपने पृष्ठ पर सामग्री रीफ्रेश करने की आवश्यकता होती है। मैं केवल डीबी परिवर्तनों पर कार्रवाई करने के लिए AJAX + jQuery का उपयोग कैसे कर सकता हूं?परिवर्तनों के लिए SQL डेटाबेस देखने के लिए AJAX का उपयोग करें

उत्तर

1

आपको लगातार उस पृष्ठ पर मतदान करना होगा जिसमें डेटाबेस से मूल्य है।

+0

आवश्यक नहीं है। पुश तकनीक उपलब्ध हैं। –

+1

@RobertHarvey जैसे? क्या आप ऐसा दे सकते हैं? –

2

अपने डेटाबेस में एक विशेष संग्रहित प्रक्रिया को हुक करें जो संशोधन के बाद आपके आवेदन को अलर्ट करता है। आपको एक कस्टम मॉड्यूल और सही ट्रिगर स्टेटमेंट की आवश्यकता होगी।

आपका अन्य विकल्प मतदान है।

+0

यह एप्लिकेशन के बारे में चेतावनी कैसे देगा, जो क्लाइंट के ब्राउज़र पर है? –

+0

एप्लिकेशन दो भागों में है: ब्राउज़र पर और वेबसर्वर पर। बैकएंड वेब सेवा डेटाबेस से बात करने के लिए ज़िम्मेदार है जब तक कि पूछताछकर्ता डेटाबेस पर SQL बात करने के लिए .0000001% शैली का उपयोग नहीं कर रहा है। "डेटाबेस मतदान" को रोकने के लिए –

+0

+1, भले ही "क्लाइंट से सर्वर मतदान" को रोका न जाए, –

5

सर्वर (डेटाबेस/वेब) कनेक्शन शुरू नहीं कर सकता - केवल ग्राहक ही कर सकता है। तो आपको अपडेट होने तक डेटाबेस को मतदान करना होगा। आप एक वेब सेवा बना सकते हैं जो डेटाबेस की जांच करता है और कौन सा jQuery उपयोग करता है।

संपादित करें: मैं सही खड़ा हूं। एक AJAX कनेक्शन तब तक खुला रखना संभव है जब तक कि सर्वर डेटा को "धक्का" न दे। देखें: http://en.wikipedia.org/wiki/Reverse_Ajax

और स्पष्ट रूप से यह वास्तव में मतदान है: http://en.wikipedia.org/wiki/Push_technology#Long_polling। अगर सर्वर के पास अभी तक भेजने के लिए कोई डेटा नहीं है, तो यह कनेक्शन तब तक खुला रहता है जब तक यह नहीं करता है। यह "शुद्ध" पुश तकनीक नहीं है, क्योंकि क्लाइंट में एक सुनवाई बंदरगाह नहीं है जो सर्वर से जुड़ता है। हालांकि प्रभाव समान है।

संपादित करें 2: तो फिर अपने प्रश्न का उत्तर देने के लिए ... आपको वेब सेवा को "मतदान" करने का तरीका चुनना होगा। फिर वेब अपडेट को यह देखने के लिए डेटाबेस जांचना होगा कि क्या अपडेट थे या नहीं। अद्यतनों के लिए डेटाबेस की जांच करना सबसे कठिन हो सकता है और वास्तव में आपकी आवश्यकताओं पर निर्भर करता है। यह देखने के लिए कि क्या कुछ बदल गया है, आप एक एसक्यूएल क्वेरी चला सकते हैं, लेकिन आप कैसे जानेंगे? इसके खिलाफ तुलना करने के लिए आपको कुछ प्रकार के पैरामीटर (आमतौर पर एक तिथि) की आवश्यकता होगी। यदि गलत किया गया है, तो आप कुछ अपडेट याद कर सकते हैं या एक अपडेट के लिए एकाधिक हिट कर सकते हैं। अद्यतनों को अधिसूचित करने का एक अच्छा तरीका क्या होगा। आप उस सूची को डेटाबेस में, स्मृति में इत्यादि में रख सकते हैं और क्लाइंट को अपडेट प्राप्त होने पर इसे साफ़ कर सकते हैं।

0

आपको मूल रूप से डीबी में परिवर्तन के लिए सर्वर को लगातार मतदान करना होगा। सर्वर क्लाइंट को कॉल नहीं कर सकता है, इसलिए यदि ग्राहक बदलाव हुए हैं तो ग्राहक को लगातार सर्वर से पूछना होगा।

+0

देखें http://en.wikipedia.org/wiki/Reverse_Ajax –

1

मैं एक HTML पृष्ठ बनाने का सुझाव देता हूं जो setIntreval() का उपयोग करता है ताकि बार-बार AJAX कॉल को एक PHP स्क्रिप्ट पर कॉल किया जा सके जो आपके डेटाबेस से पूछताछ करता है। कार्य को थोड़ा आसान बनाने के लिए आप JSON और PEAR का उपयोग कर सकते हैं।

संदर्भ लिंक:

+0

समझ गया। बहुत बहुत धन्यवाद। आपकी विधि पूरी तरह से काम करता है! बस अंतराल को बहुत कम सेट नहीं कर सकता है या डेटा पाठकों को खोलने/बंद करने में समस्याएं हैं। –

11

जो आप वर्णन कर रहे हैं उसे बोलचाल से Comet प्रोग्रामिंग कहा जाता है। धूमकेतु एक सतत HTTP कनेक्शन के साथ एक वेब पेज पर सामग्री को धक्का देने के लिए तकनीकों के एक समूह का वर्णन करता है।

धक्का डेटाबेस सर्वर में एक ट्रिगर/संग्रहीत प्रक्रिया संयोजन का उपयोग करके शुरू किया जाएगा। इस तरह, यह कोई फर्क नहीं पड़ता कि डेटा अपडेट कहां से आता है।

+1

आपको यह मिला। विकिपीडिया (http://en.wikipedia.org/wiki/Comet_%28programming%29): धूमकेतु ... कई अन्य नामों से जाना जाता है, जिनमें अजाक्स पुश, रिवर्स अजाक्स, टू-वे-वेब, HTTP स्ट्रीमिंग और HTTP शामिल हैं सर्वर दूसरों के बीच धक्का। –

+0

यह बहुत अच्छा लगता है। मुझे इसमें देखना होगा। सलाह के लिए धन्यवाद! उदाहरण के लिए –

+2

http://www.ape-project.org/ – choise

3

इम एक चैट के साथ लगभग एक ही बात करने के लिए अद्यतन dababase क्षेत्र

जांच नीचे दिए गए लिंक का मूल्य की जांच करने के लिए हर एक PHP स्क्रिप्ट पुन: लोड एक्सएक्स सेकेंड

इस तरह लग रहा है: .. jquery.noconflict का उपयोग नहीं करता है, तो $ के साथ जे की जगह

j(".chatref").everyTime(3000,function(i){ 
    j.ajax({ 
     url: "chatx.php", 
     cache: false, 
     success: function(updated){ 
      j(".chatref").html(updated); 
      ...do stuff.. 
     } 
    }); 

यह एक बहुत अच्छा विधि मुझे लगता है कि :) अगर आप chatx.php को वार्स भेजना चाहते हैं तो बस जोड़ने है ? php & x = 1 & y = 2?>

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

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