2012-07-08 9 views
10

मैं एक रेटिंग स्टार सिस्टम वाले पृष्ठ को प्रदर्शित करने के लिए एक अजाक्स बूटस्ट्रैप पॉपओवर बनाने की कोशिश कर रहा हूं।अजाक्स बूटस्ट्रैप पॉपओवर: ऑब्जेक्ट # <Object> में कोई तरीका नहीं है 'पॉपओवर'

यहां जावास्क्रिप्ट पहली बार अच्छा काम करता है। तो मैं यह त्रुटि है:

Uncaught TypeError: Object # has no method 'popover'

मैं jQuery में वास्तव में अच्छा नहीं कर रहा हूँ, लेकिन मुझे लगता है कि यह ajax कॉल की वजह से हो रहा है, लेकिन मैं नहीं मिल सकता है, जहां समस्या है।

$(".myRate") 
     .popover({ 
      offset: 10, 
      trigger: 'manual', 
      animate: false, 
      html: true, 
      placement: 'top', 
      template: '<div class="popover" onmouseover="$(this).mouseleave(function() {$(this).hide(); });"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>' 

     }); 
$('.myRate').mouseenter(popoverDisplay); 

popoverDisplay = function() { 
var el = $(this); 
var _data = el.attr('alt'); 
$.ajax({ 
    type: 'GET', 
    url: 'notes.php', 
    data: _data, 
    cache: false, 
    dataType: 'html', 
    success: function(data) { 
     el.attr('data-content', data); 
     el.popover('show'); 
    } 
    }); 
} 

मैं मैं गलत क्या कर रहा हूँ नहीं मिलता है ... किसी भी विचार?

संपादित करें:

खोज के बाद, ऐसा लगता है कि, यह लोड होने वाले पृष्ठों जो इस त्रुटि का कारण बनता है है।

वास्तव में इस हिस्से:

ऐसा लगता है कि लोड हो रहा है jQuery-1.7.2.js बग बनाने क्योंकि अगर मैं इसे निकालने के लिए, त्रुटि गायब। समस्या: मैं इसे हटा नहीं सकते क्योंकि इसके बिना jRating अब और काम नहीं करता है:/

+0

एक त्रुटि जो मैं देख सकता हूं वह यह है कि आप इसे परिभाषित करने से पहले 'पॉपओवर डिस्प्ले' का संदर्भ दे रहे हैं। चूंकि 'popoverDisplay' एक जोरदार फ़ंक्शन नहीं है, इसलिए यह त्रुटि होगी। हालांकि, इसका उल्लेख आपके लिए एक असंबंधित मुद्दा प्रतीत होता है। – Utkanos

+0

हाँ, मैंने अभी स्थानांतरित किया है, इस पोस्ट के लिए पॉपओवर डिस्प्ले फ़ंक्शन ^^ ' –

+0

कौन सी पंक्ति त्रुटि को फेंकता है - संभवतः 'el.popover (' show ')'? इसका मतलब केवल दो चीजों में से एक हो सकता है, संभावना है कि वे आपको बताएंगे कि शेष कोड काम कर रहा है: 1) 'el' एक jQuery ऑब्जेक्ट नहीं है; 2) 'पॉपओवर() 'एक उचित ढंग से परिभाषित jQuery प्लगइन (यानी विधि) – Utkanos

उत्तर

23

रेलवे ट्विटर बूटस्ट्रैप जेनरेटर चलाने के बाद, यह बूटस्ट्रैप-एसएएस पर स्विच करने के बाद मुझे यह समस्या थी।

यह फ़ाइल नाम टक्कर के कारण हुआ क्योंकि बूस्टर/बूटस्ट्रैप के बजाय बूस्टरपैस संदर्भ बूटस्ट्रैप.जेएस संदर्भित करता है, जो जेनरेट की गई फ़ाइल के साथ संघर्ष करता है।

किसी अन्य चीज़ के लिए जेनरेट किए गए ऐप/संपत्ति/जावास्क्रिप्ट/बूटस्ट्रैप.जेएस.कोफी का नाम बदलें, जैसे ऐप/संपत्ति/जावास्क्रिप्ट/बूटस्ट्रैप_और_ओवरराइड.जेएस.कोफी, और आप जाने के लिए अच्छे हैं।

+0

वही यहाँ समस्या – sebastiangeiger

+2

यह तय किया गया। एक वोट है। :) – johnnygoodman

+0

रेल बूटस्ट्रैप फ्रंट एंड के साथ समान समस्या रेल व्यवस्थापक के साथ टकराव के साथ टक्कर लगी है। फिक्स्ड यह आपको धन्यवाद! –

0

आप या तो उपयोग boostrap.js या (बूटस्ट्रैप-popover.js और बूटस्ट्रैप-tooltip.js)

लेकिन नहीं दोनों क्योंकि अगर आप दोनों का उपयोग करते हैं। आप प्राप्त Uncaught TypeError: Object # has no method 'popover'

+0

नहीं है I फिनली डिस्प्ले की एक अन्य शैली के साथ समाप्त हो गया है, इसलिए मुझे इसकी आवश्यकता नहीं है लेकिन इसे ठीक करने का कोई तरीका नहीं मिला:/ –

7

मैं इस समस्या क्योंकि मैं बूटस्ट्रैप से jQuery का उपयोग करते हुए भी googleapis (यह http://railscasts.com/episodes/205-unobtrusive-javascript में कहते हैं) की तरह आप बूटस्ट्रैप उपयोग कर रहे हैं, तो आप jQuery होगा

से jQuery आयात करने की कोशिश कर रहा था
2

मुझे एक ही समस्या थी। बूटस्ट्रैप.जेएस लोड करने के बाद आप jquery लोड हो रहे हैं। किसी कारण से अनुक्रम महत्वपूर्ण है

</footer> 
<script src="<?php echo "http://".$_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI']."assets/bootstrap/js/jquery-1.7.1.min.js" ;?>"></script> 
<script src="<?php echo "http://".$_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI']."assets/bootstrap/js/bootstrap.js" ;?>"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    create_project_form=$('form#create_project_form'); 
    $('button#create_project_button').popover({title:'New Project',content:create_project_form}); 
}); 
</script> 
</body> 
</html> 

बूटस्ट्रैप से पहले jquery लोड करने से पहले मेरे लिए काम किया गया। उम्मीद है कि

2

मुझे एक ही समस्या थी। मैं jQuery.js दो बार लोड हो रहा था ... Narf ...

0

मुझे लगता है कि आप rails उपयोग कर रहे हैं, तो यह हो सकता है कि assets/vendor/jqueryassets/vendor/bootstrap के बाद भरी हुई है, क्योंकि लोड क्रम वर्णानुक्रमानुसार है। तो आप सही लोडिंग ऑर्डर फिट करने के लिए bootstrap फ़ाइल का नाम बदल सकते हैं।मैंने उस समस्या का अनुभव किया और यह चाल