2011-03-15 20 views
7

में मैं अपने सीएमएस में फ़ाइल अपलोड करने के लिए अपलोडिफ़ाई का उपयोग कर रहा हूं। सबकुछ हाल ही में ठीक काम करता है। मैं इस ओर से इस लाइन"एनपीओब्जेक्ट पर विधि कॉल करने में त्रुटि!" अपलोडिफ़

document.getElementById(jQuery(this).attr('id') + 'Uploader').startFileUpload(ID, checkComplete);

पर एक त्रुटि

Error calling method on NPObject

मिला

uploadifyUpload:function(ID,checkComplete) { 
      jQuery(this).each(function() { 
       if (!checkComplete) checkComplete = false; 
       document.getElementById(jQuery(this).attr('id') + 'Uploader').startFileUpload(ID, checkComplete); 
      }); 
     }, 

मैं नहीं जानता कि क्यों और एक दिन डीबगिंग और परीक्षण के बाद मैंने पाया कि अगर मैं replace(/\&/g, '\\&')

से हटा देता हूं
String.prototype.escAll = function(){ 
    var s = this; 
    return s.replace(/\./g, '\\.').replace(/\?/g, '\\?').replace(/\&/g, '\\&'); 
}; 

यह फिर से काम करता है। मैं वास्तव में क्यों नहीं जानता क्यों।

किसी भी मदद की सराहना की जाएगी!

+0

कृपया, आपके द्वारा उपयोग किए जाने वाले ब्राउज़र को निर्दिष्ट करें। – sergzach

उत्तर

0

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

कुछ पुस्तकालय (उदाहरण के लिए प्रोटोटाइप.जेएस या jQuery.जेएस) आपके कोड का व्यवहार बदलते हैं। उदाहरण के लिए, आप कुछ मामलों में prototype अधिभारित नहीं कर सकते हैं। परिणाम स्पष्ट (स्पष्ट) स्थानों (जैसे कि आप गलत इंडेक्स के साथ एक सरणी चर का उपयोग करते हैं) में अपरिभाषित हो सकते हैं। आपको अतिरिक्त पुस्तकालयों के स्रोत कोड को देखना चाहिए, शायद वे prototype के साथ कुछ ऐसा करते हैं जो आपके द्वारा बताए गए फ़ंक्शन में आपके कोड को तोड़ देता है।

मेरे अभ्यास में मुझे स्थिति थी जब prototype का ओवरलोडिंग गलत तरीके से काम करता था (यह स्ट्रिंग प्रोटोटाइप आपके मामले में था)।

तो prototype का उपयोग न करें।