Как правильно отправить FormData () с AJAX

Кажется, есть проблема, когда я пытаюсь отправить свои FormData с AJAX из моего Сервер LTS (не на моей локальной машине). Я подозреваю, что FormData поддерживается не всеми браузерами, но он отлично работает на моей локальной машине с тем же браузером, который я использовал, когда попробовал его на моем сервере (LTS). Я немного растерялся здесь и не знаю, что делать.

Чтобы объяснить дальше:

индекс

<form class="image" enctype="multipart/form-data" accept-charset="utf-8" method="post">
<input id="image-value" data-id="{{id}}" name="{{picture}}" class="image-box-{{id}}" data-type="{{type}}" type="file" value="{{picture}}" />
<p id="{{id}}" class="label" >Update</p>
</form>

Мне нужно получить файл здесь и загрузить его в каталог сервера

скрипт

$('[id="image-value"]').change(function(e) {

var data = new FormData();
var file_data = this.files[0];
data.append('file', file_data);

e.preventDefault();
$.ajax({
url: './someController/upload_picture/',
type: 'POST',
data: data,
cache: false,
contentType: false,
processData: false,
dataType: 'json',
success: function(data){
if (data.success == true) {
console.log(data.image_name);
} else {
var error = data.error_message;
$(".question-message").fadeIn("fast").html(error);
}
},
error: function(jqXHR, textStatus, errorThrown) {
console.error("The following error occured: " + textStatus, errorThrown);
}
});

});

контроллер

function __construct() {
parent::__construct();
$config['upload_path'] = './data/picDir/';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['overwrite'] = TRUE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
}
function upload_picture() {
if ($this->check_authorization()) {
if ($this->ion_auth->get_user_id()) {
if ($this->upload->do_upload('file')) {
$data = $this->upload->data();
echo json_encode(array(
"image_name" => $data["file_name"],
"success" => true
));
} else {
echo json_encode(array(
"success" => false,
"error_message" => $this->upload->display_errors()
));
}
}
}
}

когда запущено, запрос просто продолжает ждать ответа от контроллера php, который, я думаю, не отвечает.

1

Решение

Я считаю, что ваш «echo json_encode …» должен быть в ответе — что-то вроде $ this-> response (json_encode …). echo не вернет ответ на запрос ajax. Пожалуйста, проверьте ваш фреймворк или lib для правильного ответа и поделитесь им.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]