Прежде чем начать, обратите внимание, что мне нужно обновить сайт, который мне не принадлежит, поэтому я не могу переделать всю логику. Если бы я сделал это, я бы сделал это по-другому.
У меня есть приложение CakePHP с формой с множеством полей. В этой форме вы можете найти файл и сохранить его асинхронно. Вот как это делается:
<input type="file" name="data[FileUpload][file]" id="myFileToUpload">
<a id="pickFile" href="#">Upload Now</a>
<script type="text/javascript">
$('#pickFile').click(function (e) {
e.preventDefault();
$.post(
"/admin/FileUploads/saveFromFlash/<?php e($session->id()) ?>", {
data: $("#myFileToUpload").val()
}, function (data) {
$("#returnedContentFromAjax").html(JSON.stringify(data));
},
"json");
});
</script>
Функция, вызываемая в основном, делает это:
$this->FileUpload->save($this->data)
, но это всегда возвращает false и "Загрузка не пройдена". Вот строка, создающая сообщение об ошибке:
if (!isset($this->data['FileUpload']['file'])) {
$this->setUploadError('No upload passed');
return false;
}
Я понятия не имею, как отправить это "$ this-> data ['FileUpload'] ['file']" через ajax ... Я думаю, это ключевая проблема, так как я не знаю, какой объект передать здесь:
{ data:$("#myFileToUpload").val() },
Я был на нем весь вечер, любая помощь будет принята с благодарностью