Je veux télécharger des fichiers via un composant que je développe sur Joomla 2.5, je dois prendre en charge pas les navigateurs HTML5 sans flash. Sur Joomla 1.5 j'ai utilisé avec succès this method, mais sur J2.5 après le téléchargement du fichier, lorsque la réponse json est retourné, au lieu de télécharger ma page, il montre juste la boîte de dialogue de téléchargement pour le fichier joomla.json. Comment puis-je obtenir la réponse json sur l'iframe interne?Joomla 2.5 téléchargement de fichier ajax
Merci!
Edit: c'est le code que je utilise:
showUploadImage est exécutée après la page est chargée, mais l'élément uploadIFrame est pas toujours là (lorsque le fichier de téléchargement préalable). Upload done est censé être exécuté quand la réponse avec le nom de fichier est reçu, mais avec l'erreur que j'essaye de corriger, ce code n'est jamais exécuté, à la place une boîte de dialogue pour télécharger joomla.json est affichée
function showUploadImage(evt) {
if (!document.getElementById("uploadIFrame")) {
return false;
}
var frame = document.getElementById("uploadIFrame");
var doc = frame.contentDocument;
page = "\
<html> \
<head> \
<link rel='stylesheet' href='<?php echo JRoute::_('components/com_tutorial/css/base.css',false); ?>' type='text/css' /> \
<link rel='stylesheet' href='<?php echo JRoute::_('components/com_tutorial/css/upframe.css',false); ?>' type='text/css' /> \
</head> \
<body>";
page += ' \
<div id="waitimage"></div> \
<form id="fileUploadForm" method="post" enctype="multipart/form-data" action="<?php echo JRoute::_('index.php?option=com_tutorial&view=editchapter&task=savechapimage&format=json&tutId='.$this->tutId.'&chapterId='.$this->chapterId); ?>" target="uploadTarget"> \
<label class="title" for="images"><?php echo JText::_("UPLOAD IMAGE"); ?></label> \
<div class="separator25"></div> \
<div id="pageimages"> \
<div id="newimgfields"> \
<div class="controw"> \
<label class="title" for="image"><?php echo JText::_('SELECT_FILE'); ?></label><input size="35" id="image" type="file" name="image" /> \
</div> \
<div class="controw"> \
<input type="submit" onclick="document.getElementById(\'waitimage\').innerHTML=\'<div class = "mooloader"></div>\';" value="<?php echo JText::_('UPLOAD_IMAGE'); ?>" /> \
</div> \
</div> \
</div> \
<iframe id="uploadTarget" name="uploadTarget" src="" style="width:0;height:0;border:0px solid #fff;"></iframe> \
</form> \
';
page += "</body></html>";
// now write out the new contents
if (doc == undefined || doc == null)
doc = frame.contentWindow.document;
doc.open();
doc.write(page);
doc.close();
doc.getElementById("uploadTarget").onload = uploadDone;
}
function uploadDone() {
var frame = document.getElementById("uploadIFrame");
var doc = frame.contentDocument;
var innerFrame = doc.getElementById("uploadTarget");
var ret = innerFrame.contentDocument.getElementsByTagName("body")[0].innerHTML;
var data = eval("("+ret+")");
alert(data);
if (data=="0"){
alert("<?php echo JText::_('ERROR_SAVE_IMAGE'); ?>");
}
else if (data=="") {
}
else {
var upImage = new Element('img',{
'class':'tutmainthumb',
'id':'tutThumb',
'src':'components/com_tutorial/helpers/image.php?img='+data
});
upImage.inject('tutImage','top');
$('uploadIFrame').dispose();
}
}
peut vraiment aider sans aucun code fourni. N'hésitez pas à utiliser mon composant SWFUpload. A été rendu simple pour permettre une intégration facile dans d'autres composants – Lodder