web-dev-qa-db-fra.com

Importez une image en utilisant AJAX dans Joomla 3.0 MVC

J'essaye de télécharger une image en utilisant AJAX jquery dans un framework Joomla MVC.

Ci-dessous, le fichier default.php qui ajoute le code de script javascript ci-dessous.

$('#icon-submit').on('click',(function(e) {
e.preventDefault();
var formData = new FormData($(this).closest('form')[0]));
  $.ajax({
    url: "index.php?option=com_jsmdownload&task=imageUpload",
    type: "POST",
    data:  new FormData(formData),
    contentType: false,
    cache: false,
    processData:false,
    success: function(data){
      alert(data);
    },
    error: function(){
    }
  });
}));

Ci-dessous le code HTML qui contient une boîte de fichier simple et un bouton

<form action="<?php echo JRoute::_('index.php'); ?>" method="POST" name="adminForm" id="adminForm" enctype="multipart/form-data">
  <input type="file" id="and_36x36" name="and_36x36">
  <input id='icon-submit' type='button' value='Next ->' />
</form>

Vous trouverez ci-dessous le code PHP dans le fichier controller.php pour la tâche imageUpload.

function imageUpload(){
  JFactory::getDocument()->setMimeEncoding( 'application/json' );
  print_r($_FILES);
  JFactory::getApplication()->close();
}

Une fois que j'ai sélectionné le fichier et cliqué sur le bouton, la fonction PHP n'est pas encore appelée et je ne vois que le résultat ci-dessous.

enter image description here

Je ne sais pas ce que je fais mal. Je veux obtenir le fichier sélectionné, les télécharger sur le serveur et revenir au navigateur.

Je me suis référé à plusieurs messages et je ne peux pas trouver de réponse.

Une observation est que si je change l'URL en un simple fichier PHP sans importer le fichier Joomla MVC, cela fonctionnera bien et je pourrais voir le résultat ci-dessous.

enter image description here

Le seul problème est que si je crée un lien vers une vue de composant, elle ne s'appelle pas. Besoin d'un conseil pour résoudre ce problème.

2
Malaiselvan

Vous devez ajouter '& tmpl = composant' à votre URL lors de l'appel AJAX pour ne renvoyer que la sortie du composant, pas la page entière.

Changement

url: "index.php?option=com_jsmdownload&task=imageUpload",

à

url: "index.php?option=com_jsmdownload&task=imageUpload&tmpl=component",

Essayez cela et voyez si cela fonctionne.

1
fruppel