2011-01-18 6 views
6

अब तक, मेरा अपलोड कार्यान्वयन अपेक्षाकृत सुचारु रूप से चल रहा है, एक नंगे मुद्दे को छोड़कर।अपलोड करें + jQuery यूआई

मेरे पास एक jquery-ui संवाद मोडल विंडो में मेरा अपलोडिफ़ ब्राउज़ प्रॉम्प्ट है। फ़ाइलें ठीक से अपलोड हो जाती हैं लेकिन प्रत्येक फ़ाइल आइटम के लिए चुनी गई, दो समान कतार आइटम (एक ही आईडी) दिखाई देते हैं।

इन कतारों में से केवल एक आइटम वास्तव में प्रगति पट्टी के साथ अपडेट किया गया है हालांकि दोनों को प्रतिशत अपडेट मिलते हैं।

जब फ़ाइल अपलोड केवल इन कतार वस्तुओं में से एक है (प्रगति पट्टी के साथ अपडेट किया गया है) हटा दिया जाता है।

alt text

मैं इसे jQuery ui को संवाद मोडल विंडो और डबल पंक्ति आइटम व्यवहार गायब हो गई के बाहर का परीक्षण किया।

हालांकि यदि संभव हो तो मैं अपलोडिफ़ प्रॉम्प्ट और कतार को एक मोडल संवाद विंडो में रखना पसंद करूंगा।

किसी भी संकेत के कारण jquery-ui मोडल विंडो में अपलोडिफ़ाई का उपयोग करने के कारण इस डबल कतार आइटम व्यवहार का कारण बनता है?

अद्यतन:

$("#Filedata").uploadify({ 
'scriptAccess': 'allways', 
'uploader'  :'<?php echo base_url();?>js/jquery.uploadify-v2.1.4/uploadify.allglyphs.swf', 
'script': '<?php echo site_url();?>/upload/process_upload', 
'cancelImg': '<?php echo base_url();?>js/jquery.uploadify-v2.1.4/cancel.png', 
'folder'   : '/', 
'fileDataName'  :'Filedata', 
'buttonText' : 'Document...', 
'width': '273', 
'height': '51', 
'wmode': 'transparent', 
'auto'   : true, 
'multi'   : false, 
'fileExt' : '*.pdf;', 'fileDesc' :'Document', 
'sizeLimit' : 10485760, 
'simUploadLimit' : 1, 
'queueSizeLimit' :'1', 
'uploaderType' : 'flash', 
'scriptData' : {'userdata':'<?php echo $userdata;?>','upload_token':'<?php echo $token['value'];?>'}, 
    onProgress: function() { 
    //hide upload button 
    $("object#FiledataUploader").height(0); 
    }, 

//workaround for bug in jQuery UI dialog/upoadify (double progress bars) 
onOpen  : function(event,ID,fileObj) { 
    $('#FiledataQueue div.uploadifyQueueItem:first-child').hide(); 
    }, 

onError: function(a, b, c, d) { 
if (d.status == 404) 
alert('Could not find upload script. Use a path relative to: ' + '<?= getcwd() ?>'); 
else if (d.type === "HTTP") 
alert('error ' + d.type + ": " + d.info); 
else if (d.type === "File Size") 
alert(c.name + ' ' + d.type + ' Limit: ' + Math.round(d.sizeLimit/1024) + 'KB'); 
else 
alert('error ' + d.type + ": " + d.info); 
}, 
onComplete : function (event, queueID, fileObj, response, data) { 
    var r = JSON.parse(response); 
    $('#token').val(r['token']);          
    $('#uploaded_filename').val(r['uploaded_filename']); 
    $('#filename_encryption').val(r['encryption']); 
    $('#FiledataQueue').html('Document <span class="bold" style="font-weight:bold;">'+ r['filename'] + '</span>'); 
}, 

onQueueFull: function(event, queueSizeLimit) { 
// supress dialog that mentions the queue is full 
return false; 
} 
}); 

HTML:

<form id="form-document" method="" action=""> 
    <input type="file" name="Filedata" id="Filedata" size="20" /> 
    <input type="hidden" name="response" id="response" value=""/> 
    <input type="hidden" name="upload_token" id="upload_token" value=""/> 
    <input type="hidden" name="uploaded_filename" id="uploaded_filename" value=""/> 
    <input type="hidden" name="filename_encryption" id="filename_encription" value=""/> 
    <input type="hidden" name="uploaded_extension" id="uploaded_extension" value=""/> 
    <input type="hidden" name="token" id="token" value="<?php echo $token['value'];?>"/> 
    </form> 

अद्यतन 2:

jQuery यूआई संवाद:

dialog_data.dialog({ 
    autoOpen: false, 
    height: 700, 
    width: 800, 
    modal: true, 
    bigframe: true, 
    buttons: { 
    'Save': function() { 
    $.ajax({ 
    type: "GET", 
    url: "<?php echo site_url();?>/upload/finish", 
    dataType: 'html', 
    data: $('#form-document').serialize(), 
    success: function(){ 
     oCache.iCacheLower = -1; 
     oTable.fnDraw(); 
     dialog_data.dialog('close'); 
    } 
    }); 
    }, 
    'Close': function() { 
    $(this).dialog('close'); 
    $('.loading').hide(); 
    } 
    }, 
    open: function(){ 
    $('.loading').hide(); 
    $("object#FiledataUploader").height(30); 
    }, 
    close: function() { 
    $('#uploaded_filename').val(''); 
    $('#filename_encription').val(''); 
    $('#FiledataQueue').html(''); 
    } 
}); 
+0

को मैं के साथ इसे हल करने के लिए

बदलें वर्कअराउंड समाधान लेकिन मैं कामकाज से खुश नहीं हूं। मैं इस (शायद) बग पर अधिक जानकारी जानना चाहता हूं। – mojeime

+0

कृपया अपना कोड? – ifaour

+2

किसी और को समस्या में भाग लेने के मामले में आपको अपना कामकाज साझा करना चाहिए। – Jimmy

उत्तर

1

यदि आप एक और आईडी और अपने फ़ाइल फ़ील्ड में नाम देते हैं तो आप यह जांचने का प्रयास कर सकते हैं कि क्या होता है। Filedata अपलोडिंग स्क्रिप्ट में उपयोग किया जाने वाला चर है जो भी आपके क्षेत्र में आईडी/नाम देता है, और मुझे आश्चर्य है कि कोई संघर्ष नहीं हो सकता है।

तो मैं कहूंगा कि आईडी को बदलने का प्रयास करें और अपनी अपलोडिफ़ी सेटिंग्स (आईडी के रूप में नई आईडी के साथ) में आईडी पैरामीटर जोड़ना, और हमें बताएं कि क्या यह समस्या ठीक करता है।

+0

दिखाता है यह – mojeime

+0

काम नहीं करता है, मैं आपके कोड से हूं और मुझे नहीं पता कि यह कहां से आ रहा है। एक बात मुझे परेशान कर रही है: आपकी स्क्रिप्ट फ़ाइल में विस्तार क्यों नहीं है? मुझे इसे लागू करते समय एक ही समस्या (1 फ़ाइल के लिए 2 कतार) मिली लेकिन ... मुझे याद नहीं आया कि मैंने इसे कैसे ठीक किया! यूआई संवाद के बिना, आपको इसे कच्चे रूप से आज़माएं। आपको कोई जावास्क्रिप्ट त्रुटि नहीं मिली है? – Nabab

+0

आपकी स्क्रिप्ट फ़ाइल का विस्तार क्यों नहीं है? Becouse मैं ढांचे का उपयोग करता हूं और यह इस प्रारूप में मेरे यूआरएल को फिर से लिख रहा है। यह सही यूआरएल है। और मैं पुष्टि करता हूं कि मैंने सबकुछ फिर से परीक्षण किया है और जब अपलोडिफ़ाई jQuery में नहीं है संवाद सब कुछ ठीक काम कर रहा है और जब jQuery यूआई संवाद में है तो एक डबल प्रगति पट्टी है। – mojeime

0

क्या यह बग का समाधान है?

//workaround for bug in jQuery UI dialog/upoadify (double progress bars) 
onOpen  : function(event,ID,fileObj) { 
    $('#FiledataQueue div.uploadifyQueueItem:first-child').hide(); 
    }, 
0

अभाव समारोह getAttributeNode और फ्लैश तत्व में getAttribute में यह त्रुटि। "JQuery-min.js"

elem.getAttributeNode(name) // OR a.getAttributeNode(b) 

(elem.getAttributeNode?elem.getAttributeNode(name):null) // OR (a.getAttributeNode?a.getAttributeNode(b):null) 

और

elem.getAttribute(name) // OR a.getAttribute(b) 

(elem.getAttribute?elem.getAttribute(name):null) // OR (a.getAttribute?a.getAttribute(b):null)