2012-10-15 17 views
5

बुला नहीं प्लग इन मैं jQuery fileupload प्लगइन का उपयोग कर रहा हूँ और मैं कुछ कस्टम jQuery सामान करने के लिए एक बार fileupload यहां से https://github.com/blueimp/jQuery-File-Upload/wiki/OptionsjQuery फाइल अपलोड सफलता कॉलबैक

किया जाता है चाहता हूँ अब यह इस

Callback for successful upload requests. 
$('#fileupload') 
     .bind('fileuploaddone', function (e, data) {/* ... */}) 
कहते हैं

अब मैं अपने खुद के js में परीक्षण के लिए इस कस्टम समारोह को परिभाषित किया है फ़ाइल

$('#fileupload').bind('fileuploaddone', function (e, data) {/* ... */ 
alert('Hello'); 
}) 

लेकिन यह काम नहीं कर रहा है।

लेकिन अगर मैं यहाँ

// Callback for successful uploads: 
      done: function (e, data) { 

में मुख्य फ़ाइल को संपादित तो यह काम करता है।

+0

अपने fileupload तत्व भी आईडी है "fileupload"? –

उत्तर

4

लाइब्रेरी कोड को देखते हुए, लगता है कि सभी घटनाओं का नाम बदलकर 'fileupload' को हटा दिया गया है ... तो 'fileuploaddone' बस 'किया गया' बन जाता है। यह अन्य सभी कॉलबैक के लिए मान्य है। इस खंड पर देखो:

// Other callbacks: 
    // Callback for the submit event of each file upload: 
    // submit: function (e, data) {}, // .bind('fileuploadsubmit', func); 
    // Callback for the start of each file upload request: 
    // send: function (e, data) {}, // .bind('fileuploadsend', func); 
    // Callback for successful uploads: 
    // done: function (e, data) {}, // .bind('fileuploaddone', func); 
    // Callback for failed (abort or error) uploads: 
    // fail: function (e, data) {}, // .bind('fileuploadfail', func); 
    // Callback for completed (success, abort or error) requests: 
    // always: function (e, data) {}, // .bind('fileuploadalways', func); 
    // Callback for upload progress events: 
    // progress: function (e, data) {}, // .bind('fileuploadprogress', func); 
    // Callback for global upload progress events: 
    // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); 
    // Callback for uploads start, equivalent to the global ajaxStart event: 
    // start: function (e) {}, // .bind('fileuploadstart', func); 
    // Callback for uploads stop, equivalent to the global ajaxStop event: 
    // stop: function (e) {}, // .bind('fileuploadstop', func); 
    // Callback for change events of the fileInput(s): 
    // change: function (e, data) {}, // .bind('fileuploadchange', func); 
    // Callback for paste events to the pasteZone(s): 
    // paste: function (e, data) {}, // .bind('fileuploadpaste', func); 
    // Callback for drop events of the dropZone(s): 
    // drop: function (e, data) {}, // .bind('fileuploaddrop', func); 
    // Callback for dragover events of the dropZone(s): 
    // dragover: function (e) {}, // .bind('fileuploaddragover', func); 

आप क्या हो रहा है के बारे में कुछ संदेह है, तो सिर्फ कोड के अंदर देखो। यह पुस्तकालय संपीड़ित नहीं है इसलिए इसे देखना आसान है। उदाहरण के लिए

// start: function (e) {}, // .bind('fileuploadstart', func); 

start कॉलबैक कार्यान्वित किया जाता है। fileuploadstart नहीं है।

8

जांचें कि क्या सर्वर-साइड अपलोडिंग स्क्रिप्ट एक JSON उत्तर देता है - मेरे मामले में यह उत्तर नहीं था जब उत्तर खाली था, लेकिन फ़ाइल सफलतापूर्वक अपलोड की गई थी।

तो, नीचे jQuery 1.9.1 और "jQuery फाइल अपलोड प्लगइन" का नवीनतम संस्करण के साथ मेरे लिए काम कर रहा है - 5.21.3

$("#fileupload").bind("fileuploaddone", function (e, data) { 
    console.log("fileuploaddone event fired"); 
}); 
+0

मैंने यह भी देखा कि: यदि आपका सर्वर JSON वापस नहीं कर रहा था तो कॉलबैक आग नहीं लगेगा। – Fostah

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