2012-09-13 23 views
8

मैं ब्लूंप jquery-file-upload प्लगइन के लिए प्रगति पट्टी को कार्यान्वित करना चाहता हूं लेकिन progress कॉलबैक केवल अपलोड शुरू होने और डेटा के तुरंत बाद निकाल दिया जाता है। लोड == डेटा.total।प्रगति कॉलबैक हमेशा jquery-file-upload प्लगइन में 100% अपलोड दिखाता है

<input data-url="/ads/32/photos" id="image" name="image" type="file" /> 

$(".upload-btn input").fileupload({ 
    dataType: "json", 
    progress: function(e, data) { 
     alert(data.loaded + "/" + data.total); 
    }, 
    done: function(e, data) { 
     alert("done"); 
    } 
    }); 

सेकंड बाद (अपलोड पूर्ण होने पर) किया कॉलबैक निकाल दिया जाता है और मुझे लगता है कि सर्वर लॉग अपलोड सफल हुआ था के माध्यम से इस बात की पुष्टि कर सकते हैं। जब मैं progressall कॉलबैक का उपयोग करने का प्रयास करता हूं तो मुझे वही व्यवहार मिलता है।

यह सुनिश्चित नहीं है कि यह संबंधित है, लेकिन मैं वर्तमान में jquery.fileupload-fp.js लाइब्रेरी को शामिल नहीं कर रहा हूं क्योंकि यह अपलोड करने से किसी भी अपलोड गतिविधि को रोकता है।

कोई विचार क्या मैं गलत कर रहा हूं?

+1

हे @chris, तो आप इस मुद्दे को ठीक करने में सक्षम थे? मुझे एक ही मुद्दे का सामना करना पड़ रहा है। – varunvlalan

उत्तर

-1

प्रगति फ़ंक्शन alert स्ट्रिंग "100%" में है? मैं प्लगइन से अपरिचित हूं, लेकिन alert में progress फ़ंक्शन के लिए अभिव्यक्ति सब कुछ String प्रकार पर रखती है। तो मैं उम्मीद करता हूं कि यह स्ट्रिंग "x/y" दिखाता है।

किसी भी मामले में आप उन विशेषताओं (total और loaded) सही हैं, तो

alert(data.loaded/data.total); // no quotes, no +'s 

करने के लिए progress समारोह बदलना चाहिए, तो यह आप इच्छित व्यवहार देना चाहिए।

संपादित करें: क्या हो रहा है यह स्पष्ट करने के लिए, यदि यह आपके प्रश्न का उत्तर देता है: + ऑपरेटर अपने ऑपरेटरों के डेटा प्रकार के अनुसार विभिन्न तरीकों से व्यवहार करता है। यदि आप + दो नंबर एक साथ, यह एक अंकगणितीय जोड़ ऑपरेटर के रूप में काम करता है। यदि ऑपरेटरों के भी एक एक स्ट्रिंग है, तो + पहले अन्य ऑपरेटरों को पहले स्ट्रिंग में बदल देगा, और फिर को संयोजित करें। अंतिम परिणाम एक स्ट्रिंग होगा, संख्या नहीं।

var two = "2"; // two is a String data type 
alert(two + 2); // Returns "22" as a String 

var two = 2; 
alert(two + 2); // Returns 4 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Addition