繁体   English   中英

在Joomla 3.0 MVC中使用AJAX上传图像

[英]Upload image using AJAX in Joomla 3.0 MVC

我正在尝试在Joomla MVC框架中使用AJAX jQuery上传图像。

以下是default.php,它添加了以下javascript脚本代码

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

以下是HTML代码,其中包含一个简单的文件框和一个按钮

<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>

以下是controller.php中用于imageUpload任务的PHP代码。

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

一旦选择了文件并单击按钮,就调用了ajax函数,也调用了PHP函数,但是表单数据在内部不可用。

print_r命令始终打印一个空数组。 我不知道我在做什么错。 我想获取选定的文件并将其上传到服务器,然后返回浏览器。

我推荐了多个帖子,无法找到答案。 有人可以请教。

更新1

如果我将一个独立的PHP文件设置为URL,那么它将起作用。 例如

url: "http://localhost/test/indextest.php",

但是,如果我使用控制器设置了Joomla组件路径,它将无法正常工作。

您必须将表单传递给FormData对象,您所拥有的就是按钮。
在按钮单击事件处理程序中, this是指按钮而不是表单。
选择表单并将其传递给FormData构造函数

new FormData($(this).closest('form')[0]),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM