Добрый день. Пытаюсь разработать модуль для Joomla.
На странице пользователя есть логика, которая отправляет выбранные файлы через AJAX на сервер.
На сервере, в Helper.php есть метод getAjax() который должен принимать данные.
При отправке через AJAX обычный текст\массив работает. Но если отправлять FormData, то данные на сервер даже не уходят. А метод AJAX в jQuery возвращает успех, но в ответе содержится полный HTML код страницы, на которой все это находится. Метод getAjax соответственно не срабатывает.
На стороне клиента в default.php
<?php defined('_JEXEC') or die;
JHtml::_('jquery.framework');
JHtml::script('modules/mod_uploadschedule/js/post.js');
?>
<div id="mod_uploadschedule">
<div id="uploadschedule">
<form action="" class="form-upload">
<input type="text" required=""><br>
<input type="file" id="files"><br>
<button type="button" class="btn btn-success" id="btn_upload">Загрузить</button>
</form>
</div>
</div>
и post.js
jQuery(document).ready(function (jQuery) {
jQuery('#btn_upload').on( 'click', function(event){
event.stopPropagation();
event.preventDefault();
if( typeof files == 'undefined' ) return;
var form = jQuery('.form-upload')[0];
var input = jQuery('#files')[0];
var data = new FormData(form);
jQuery.each( input.files, function( key, value ){
data.append( key, value );
});
var request = {
'option': 'com_ajax',
'module': 'uploadschedule',
'format': 'json',
'data' : data
};
jQuery.ajax({
type : 'POST',
processData : false,
contentType : false,
data : request,
success: function ( response, status, jqXHR ) {
if( typeof response.error === 'undefined' ){
} else {
console.log('ОШИБКА: ' + response.data );
}
},
error: function(response, jqXHR, exception) {
console.log('ОШИБКА: ' + response.responseText );
}
});
return false;
});
})
На сервере Helper.php
<?php defined('_JEXEC') or die;
class modUploadscheduleHelper {
public static function getAjax() {
jimport('joomla.application.module.helper');
try {
$input = JFactory::getApplication()->input;
$files = $input->files->get('jform');
$post = $input->post->get('jform', array(), 'array');
var_dump($data);
var_dump($post);
//return array('status' => 'ok', 'message' => '');
if ($input->get('cmd')) {
$cmd = $post_array['cmd'];
$data = $post_array['data'];
switch ($cmd) {
case "download" :
break;
case "set" :
break;
default:
return array('status' => 'error', 'message' => 'cmd not identify');
break;
}
}
} catch (Error $e) {
echo new JResponseJson($e->getMessage());
}
}
}
Помогите разобраться.