Я разрабатываю CakePHP и изначально думал, что эта проблема связана с Cake; это не так. Я снова написал вопрос, чтобы сделать ответ, который я получил более широкое применениеJQuery1.8.0: Отправка файлов из форм через AJAX
У меня есть форма
<form action"">
<fieldset>
<!---- bunch of fields----->
<input type="file" name="data[Upload][file]" id="UploadFile">
<button id="ajaxUploadSubmit"> Submit </button>
</fieldset>
</form>
И представить функцию я написал как выглядит:
$("#ajaxUploadSubmit").click(function() {
$.ajax({
url:"uploads/add",
data: $("#UploadsAddForm").serialize()
}).done(function(responseText) {
alert(responseText);
})
.fail(function() {
alert('failxors');
})
});
Но эта строка возвращает пустой массив: $this->request->data
.
Увы, вы правы о действии по умолчанию; в коде, который я опубликовал, я оставил этот флаг, но на самом деле (т. е. мой живой код), который уже был адресован (с CakePHP вы можете остановить активность формы по умолчанию из 'Form-> create()', используя ' 'default' => false'. – Jonline
Кроме того, представление * * происходит, проблема в том, что данные в форме не отправляются вместе с ним, и я подозреваю, что это имеет какое-то отношение к тому, как CakePHP хочет получать данные (т. е. систему маршрутизации торта) в отличие от того, как Jquery отправляет ее, но я недостаточно знаком с соглашениями Cake или JSON (что в основном я считаю, что JQuery создает свои вызовы AJAX с ...?) до выяснить, в чем дело: – Jonline
Прежде всего, вы пытались отладить данные в браузере? Или путем проверки запроса, отправленного на сервер в FireBug (или Chrome WebInspector), и отладки 'console.log ($ (" # UploadsAddForm ") .serialize());'. Также отправка этой формы не будет работать так, потому что jQuery.serialize() ** не отправляет файлы-загрузки ** http://stackoverflow.com/questions/4545081/how-do-to-file-upload-using-jquery-serialization есть несколько плагинов, которые используют API загрузки файлов HTML5 что может работать также – thaJeztah