Разместите поля формы + файл, используя xhr, и восстановите серверную часть. - PullRequest
2 голосов
/ 18 июля 2011

Я пытаюсь отправить данные HTML-формы в php-скрипт с помощью XHR-запроса.

Я столкнулся с проблемой с кодом, однако я подозреваю, что это связано с серверной частью.С другой стороны, возможно, в javascript происходит что-то неправильное:

var fd = new FormData();
fd.append("title", $('#uploadVidTitle').val());
fd.append("proj", $('#uploadVidProject').val());
fd.append("desc", $('#uploadVidDesc').val());
fd.append("action", $('#uploadAction').val());
console.log(fd);
fd.append("uploadFile", document.getElementById('videoUpload').files[0]);
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "actions.php", false);
xhr.send(fd);

В настоящее время в коде php я получаю содержимое форм с помощью метода $_POST["name"], однако не могу получить файлысодержимое с использованием $_FILES["name"].Любые указатели будут с благодарностью.

Ответы [ 2 ]

0 голосов
/ 18 июля 2011

Я думаю, что проблема на стороне сервера. Ты это

foreach ($_FILES as $id => $val)
      if (isset($_FILES[$id]['name']) && $_FILES[$id]['name'] != '')
      {
          //process files

Получение имен файлов с использованием $ _FILES [$ id] ['name'] мне помогло.

0 голосов
/ 18 июля 2011

Вы можете попробовать установить заголовки некоторых запросов перед отправкой запроса:

xhr.setRequestHeader ("Content-Type", "application / x-www-form-urlencoded");

или

xhr.setRequestHeader ("Content-type", "multipart / form-data");

Также проверьте суперглобальный $ _FILES после отправки запроса POST, чтобы узнать, можно ли из него получить доступ к каким-либо файлам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...