2012-04-12 10 views
14

के लिए काम नहीं कर रहा है मैं फ़ाइलों को अतुल्यकालिक रूप से अपलोड करने के लिए Blueimp Jquery File Upload प्लगइन का उपयोग कर रहा हूं। यह अधिकांश अन्य ब्राउज़रों (कुछ मामूली मुद्दों के साथ) में अच्छी तरह से काम करता है - आईई पर, मुझे यह समस्या दिखाई देती है कि "किया गया", "स्टॉप", "हमेशा", "पूर्ण" और कुछ अन्य ईवेंट कॉलबैक नहीं आ रहे हैं।ब्लूंप jquery फ़ाइल अपलोड - "पूर्ण", "पूर्ण" कॉलबैक IE 9

डीबगिंग करते समय, मैंने "किया", "असफल", "हमेशा" में console.logs जोड़ा, और _onSend फ़ंक्शन में jjery.fileupload.js में AJAX अनुरोध के लिए "पूर्ण" विधि जोड़ा - लेकिन उनमें से कोई भी आईई में शामिल नहीं लग रहा है।

_onSend: function (e, data) { 
     var that = this, 
      jqXHR, 
      slot, 
      pipe, 
      options = that._getAJAXSettings(data), 
      send = function (resolve, args) { 
       that._sending += 1; 
       jqXHR = jqXHR || (
        (resolve !== false && 
        that._trigger('send', e, options) !== false && 
        (that._chunkedUpload(options) || $.ajax(options))) || 
        that._getXHRPromise(false, options.context, args) 
       ).complete(function (result, textStatus, jqXHR) { 
        console.log("complete"); 
       }).done(function (result, textStatus, jqXHR) { 
        console.log("done", result); 
       }).fail(function (jqXHR, textStatus, errorThrown) { 
        console.log("fail", result); 
       }).always(function (a1, a2, a3) { 
        console.log("done", result); 

        } 
       }); 
       return jqXHR; 
      }; 

मैं समझता हूँ कि आईई 9 में, jquery.iframe-transport.js फाइल अपलोड के लिए इस्तेमाल किया है (जैसा कि एक्सएचआर फ़ाइल अपलोड IE में समर्थित नहीं हैं) [प्लगइन कोड पठनीयता के लिए छंटनी की]।

मुझे यकीन नहीं है कि मुझे इस समस्या को ठीक करने/डिबग करने के बारे में कैसे जाना चाहिए।

धन्यवाद!

उत्तर

19

जब जेसन को सर्वर से वापस किया जा रहा है, तो प्रतिक्रिया के सामग्री प्रकार को "टेक्स्ट/एचटीएमएल" या "टेक्स्ट/सादा" (एप्लिकेशन/जेसन के बजाए) पर सेट किया जाता है। यह केवल उन ब्राउज़रों के लिए लागू होता है जो XHR फ़ाइल अपलोड (जैसे IE9) का समर्थन नहीं करते हैं और जहां ब्लूंप प्लगइन इसके बजाय IFrame परिवहन का उपयोग कर रहा है। "सामग्री बातचीत" प्लगइन दस्तावेज में के तहत

संबंधित जानकारी: https://github.com/blueimp/jQuery-File-Upload/wiki/Setup

+1

रेल ऐप के लिए हम यह कैसे कर सकते हैं? – CanCeylan

+0

@CanCeylan: प्रस्तुत करें: text => {...} .to_json प्रस्तुत करने के बजाय: json => {...} – mkk

+0

@tanushree इस प्रतिक्रिया को लिखने के लिए समय निकालने के लिए धन्यवाद। इसने एक मुद्दा तय किया है कि मैं थोड़ी देर के लिए डिबगिंग कर रहा हूं। – PhysX

6

रिकॉर्ड के लिए, मैं जब S3 के लिए सीधी अपलोड करने, अब है कि उनके CORS विशेषता यह है कि के लिए अनुमति देता है इस समस्या में पड़ गए।

समाधान सफलता_action_status को '200' पर सेट करना था, और फिर पूर्ण घटना ठीक से ट्रिगर हुई थी।

+8

अधिक जानकारी और मैं आपको अपवित्र करता हूं। – guiomie

0

यदि किसी को अभी भी S3 पर सीधे अपलोड के साथ इस समस्या का सामना करना पड़ रहा है तो समाधान "201" के मान के साथ सफलता_action_status फ़ील्ड जोड़ने का है। सुनिश्चित करें कि आप इसे पॉलिसी डेटा के हिस्से के रूप में भी शामिल करते हैं क्योंकि उन्हें मेल खाना पड़ेगा।

स्पष्ट रूप से IE9 S3 से अपलोड प्राप्त करते समय एक खाली स्ट्रिंग वापस आ जाएगी। इसे एक्सएमएल वापस करने के लिए, जिसे फ़ाइल अपलोडर की आवश्यकता है, आपको इसे 201 की स्थिति वापस बताना होगा।

+0

क्या आप XML परिणाम को पार्स करने में सक्षम थे? मुझे अपलोड की गई फ़ाइल का मुख्य नाम प्राप्त करने की आवश्यकता है, मैं इसे XML प्रतिक्रिया में देख सकता हूं, लेकिन 'data.result' को 'पूर्ण' विधि से अपरिभाषित किया गया है। ऐसा लगता है कि यह इसके कारण है - https://github.com/blueimp/jQuery-File-Upload/wiki/Cross-domain-uploads#cross-site-iframe-transport-uploads। किसी भी कामकाज के बारे में पता है? – Chris

+0

@chris यह थोड़ी देर हो गया है क्योंकि मैंने इसे देखा है और मुझे 100% यकीन नहीं है कि मैं जो समस्या देख रहा हूं उसे समझता हूं। लेकिन मैंने अभी अपना कोड चेक किया है और मैं इस तरह के अपलोड को ** पर ('fileuploaddone', फ़ंक्शन (ई, डेटा) {...} ** कॉलबैक की तरह एक्सेस कर रहा हूं: ** file = data.files [ 0] ** – hraynaud

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