2012-09-04 8 views
6

के भीतर नहीं बुलाया गया विफल रहता है, मैं छवि के साथ आने वाले अन्य पोस्ट डेटा के साथ, मेरे सर्वर पर एक छवि को ठीक से अपलोड करने के लिए SWFUpload प्राप्त करने का प्रयास कर रहा हूं। डेटा भरने के लिए एक फॉर्म है, इसलिए उपयोगकर्ता ब्राउज़ बटन पर क्लिक करने के बाद और उसकी छवि फ़ाइल का चयन करता है, छवि तुरंत अपलोड नहीं होती है। यह कतार में रखा जाता है जब तक कि उपयोगकर्ता एक भेजें बटन पर क्लिक नहीं करता है, फिर मैं mySwfUploadInstance.startUpload() को कॉल करता हूं ताकि अपलोड शुरू हो जाए।SWFUpload startUpload() फ़ाइल_dialog_complete_handler

लेकिन यह समारोह 'callFlash' में swfupload.js की लाइन 452 पर बुरी तरह विफल रहता है:

Object #<HTMLObjectElement> has no method 'CallFunction'

:

Uncaught Call to ReturnUploadStart failed

अपवाद इस त्रुटि फेंकने से पहले पकड़े जाने पीछा कर रहा है

निम्न फ़ंक्शन में:

SWFUpload.prototype.callFlash = function (functionName, argumentArray) { 
    argumentArray = argumentArray || []; 

    var movieElement = this.getMovieElement(); 
    var returnValue, returnString; 

    // Flash's method if calling ExternalInterface methods (code adapted from MooTools). 
    try { 
     returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>'); 
     returnValue = eval(returnString); 
    } catch (ex) { 
     throw "Call to " + functionName + " failed"; 
    } 

    // Unescape file post param values 
    if (returnValue != undefined && typeof returnValue.post === "object") { 
     returnValue = this.unescapeFilePostParams(returnValue); 
    } 

    return returnValue; 
}; 

movieElement एक वैध फ़्लैश ऑब्जेक्ट की तरह दिखता है।

मुझे लगता है कि त्रुटि नहीं मिलता है अगर मैं startUpload() फ़ंक्शन के अंदर मैं जब SWFUpload आरंभ file_dialog_complete_handler के पास फोन:

function ImageFileDialogComplete(numFilesSelected, numFilesQueued) 
{ 
    try 
    { 
     this.startUpload(); 
    } 
    catch (ex) 
    { 
     this.debug(ex); 
    } 
} 

मैं वास्तव में उपयोगकर्ता को पूरा करता है जब करने के लिए अपलोड स्थगित करने के लिए सक्षम होना चाहिए फॉर्म भेजें और भेजें बटन पर क्लिक करें।

किसी भी विचार को SWFUPload के साथ क्या गलत है जब मैं स्टार्टउप्लोड() को पूर्ण हैंडलर से बाहर कॉल करता हूं?

उत्तर

14

ऐसा लगता है कि समस्या यह थी क्योंकि मैं डिस्प्ले सेट करके फ्लैश ऑब्जेक्ट युक्त div को छुपा रहा था: कोई भी नहीं, startUpload() को कॉल करने से ठीक पहले। मैं फॉर्म को छुपाने और इसके बजाय प्रगति पट्टी के साथ एक div दिखाने के लिए ऐसा कर रहा था।

किसी कारण से फ्लैश ऑब्जेक्ट स्क्रीन पर दिखाई देना चाहिए अन्यथा सभी कॉल किए गए कॉल विफल हो जाएंगे।

+3

इस उत्तर को पोस्ट करने के लिए धन्यवाद - आपने मुझे – Jeremy

+0

डिबगिंग के कई घंटे बचाए हैं क्या आपको बेहतर समाधान मिला है? अपलोड करने के बाद मुझे कंटेनर छिपाने की जरूरत है। – Teddy

+0

कंटेनर को छिपाने के बजाय मुझे एक बेहतर समाधान मिला, मैंने कंटेनर चौड़ाई और ऊंचाई 1px और डिस्प्ले ब्लॉक सेट किया। – Teddy

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