2014-11-21 27 views
0

我想在Joomla MVC框架中使用AJAX jQuery上传图像。使用Joomla 3.0中的AJAX上传图像MVC

下面是它增加了下面的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(){ 
    } 
    }); 
})); 

下面是它包含一个简单的文件框和一个按钮

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

下面的HTML代码的PHP代码如default.php在imageUpload任务的controller.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组件路径不起作用。

+0

这是否组件'com_jsmdownload'要求用户登录才能上传图片?还是会让任何人? – Craig 2014-11-22 09:02:51

+0

为什么不使用内置的软件包进行上传?上传图像很危险,您需要构建身份验证检查,授权检查,名称的广泛检查以及映像本身是否包含恶意代码。我在仔细阅读OWASP网站之前仔细阅读。 – Elin 2014-11-22 20:34:41

+0

@cppl - 是这个组件仅用于注册用户。有没有可用于Joomla上传图片的内置软件包? – Malaiselvan 2014-11-23 10:57:55

回答

0

您必须将表单传递给FormData对象,您拥有的是按钮。
在按钮点击事件处理程序this指的是按钮不是窗体。
选择表单,并将其传递到FORMDATA构造

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

现在试过了,结果仍然一样。我无法获取PHP内部的表单数据。 – Malaiselvan 2014-11-21 23:03:43