2011-09-20 2 views
6

मैं एक jQuery मोबाइल एप्लिकेशन लिख रहा हूं जिसके लिए उपयोगकर्ता प्रमाणीकरण की आवश्यकता है। एक ही उपयोगकर्ता को कई सत्रों से अपना सत्र नहीं खोल सकता है: यदि उपयोगकर्ता किसी अन्य ब्राउज़र से लॉग इन करता है, तो पिछले सत्र को मृत के रूप में चिह्नित किया जाता है।jQuery मोबाइल में पेज परिवर्तन त्रुटियों को कैसे संभालें

यदि उपयोगकर्ता मृत सत्र के साथ ब्राउज़र के साथ किसी अन्य पृष्ठ पर जाने का प्रयास करता है, तो "पृष्ठ लोड करने में त्रुटि" संदेश प्रदर्शित होता है। यह बुरा है क्योंकि उपयोगकर्ता नहीं जानता कि उसे यह त्रुटि क्यों मिल रही है। क्या त्रुटि इवेंट में टैप करना संभव है, इसलिए सत्र की स्थिति की जांच हो सकती है और सत्र मरने पर उपयोगकर्ता को लॉगिन पेज पर रीडायरेक्ट कर सकता है?

उत्तर

1

मैं jQuery मोबाइल forking और कस्टम त्रुटि हैंडलर जोड़ने के लिए एक क्षमता जोड़ने समाप्त हो गया: https://github.com/jquery/jquery-mobile/pull/2504 मुझे लगता है कि यह बेहतर अन्य सुझाव क्योंकि यह वास्तव में त्रुटि होने पर छोड़कर कोई ओवरहेड नहीं जोड़ता है।

अद्यतन: jQuery मोबाइल आरसी 1 में एक नया पेजेलोडफेल कार्यक्रम होगा। इससे इस समस्या को सुंदरता से और परियोजना मानकों के अनुसार हल किया जाएगा।

0
$(a).click(function(){ 
    // check for session? 
}); 
+0

इसे हल करने का एक तरीका है कि लेकिन यह थोड़ा जरूरत से ज्यादा हो सकता है पर

अधिक जानकारी। यह अनुरोधों की मात्रा को लगभग दोगुना करेगा और आवेदन मुख्य रूप से मोबाइल उपकरणों पर उपयोग किया जाता है, जो एक उल्लेखनीय समस्या बन सकता है। –

2

संबंधित:

आप

pagebeforeshow 0 की तरह कुछ इस्तेमाल कर सकते हैं

इसके संक्रमण शुरू होने से पहले दिखाए जा रहे पृष्ठ पर ट्रिगर किया गया।

उदाहरण (छद्म कोड):

$('#pageId').live('pagebeforeshow',function(event, ui){ 
    // check session here 
    if(!$session) { 
     // redirect to login 
     $.mobile.changePage('#login'); 
    } 
}); 
+0

यह थोड़ा बेहतर समाधान है। हालांकि यह अभी भी थोड़ा अधिक लगता है। मैं jQuery मोबाइल का कांटा करने और एक सब्सक्राइब करने योग्य त्रुटि इवेंट जोड़ने के बारे में सोच रहा था, इसलिए जब यह होता है तो मैं केवल त्रुटि को संभाल सकता था। फिर फिर से समयपूर्व अनुकूलन खतरनाक है इसलिए शायद मैं आपके सुझाव के साथ रोल करूंगा। :) –

+0

यह सब के बाद मदद नहीं की। पेज लोडिंग विफल रहता है और पेजबेरहाइड घटनाएं ट्रिगर नहीं होती हैं यदि पेज लोडिंग विफल हो जाती है। –

+0

मेरा अगला सुझाव AJAX का उपयोग करना होगा और अपाचे प्रतिक्रिया की जांच करें, उदाहरण: यदि आपको 200 प्रतिक्रिया मिलती है तो आप अच्छे हैं, अन्यथा ...अधिक प्रतिक्रियाओं को मैप करने की आवश्यकता हो सकती है और साथ ही यह केवल एक अवधारणा –

3

कैसे

pagechangefailed 

घटना के बारे में?

जब पगेलोड विफल रहता है, तो यह निकाल दिया जाता है, जो ऐसा लगता है। http://jquerymobile.com/test/docs/api/events.html

+0

लौटें हाँ, यह हाल के संस्करणों में उपलब्ध है। हालांकि सितंबर में मुझे यह समस्या वापस आई थी जब इसे अभी तक लागू नहीं किया गया था। अपने स्वयं के जवाब में मैंने pageloadfailed घटना का वर्णन किया है। स्पष्ट रूप से पेजchangeफेल भी पर्याप्त हो सकता है। –