Задать вопрос
Dazle_PrG
@Dazle_PrG
WEB программист

Не могу передать POST запрос ajax/js почему?

Рабочий код с которым передаю видео файл с видимой загрузкой прогресс бара, помимо загрузки файла мне нужно передать несколько полей формы, а вот поля формы не передаются.
Раньше использовал другое написание для ajax:
$.ajax({
    url: 'shablon/polzdota.php',
      type: 'POST',
      data: {"mess_name":mess_name},
      success: function(html){
        // enable 
        btn.disabled = enable; 
        box.html(html); 
      }
    });

А этот код с другим стилем написания в нем мне и нужно получить $_POST['mess_name'] чтобы использовать его в файле
shablon/polzdota.php:
function _(abc) {
    return document.getElementById(abc);
}

function uploadFileHandler() {
    var file = _("filename").files[0];
    var mess_name =  $_POST['mess_name']; //что то здесь не так, я пробовал разные комбинации
 //мне выдает NULL или INDEFINE

    var formdata = new FormData();
    formdata.append("filename", file);
    formdata.append("mess_name", mess_name);
    
    var ajax = new XMLHttpRequest();
    ajax.upload.addEventListener("progress", progressHandler, false);
    ajax.addEventListener("load", completeHandler, false);
    ajax.addEventListener("error", errorHandler, false);
    ajax.addEventListener("abort", abortHandler, false);
    ajax.open("POST", "shablon/polzdota.php");
    ajax.send(formdata);
}

function progressHandler(event) {
    var loaded = new Number((event.loaded / 1048576));//Make loaded a "number" and divide bytes to get Megabytes
    var total = new Number((event.total / 1048576));//Make total file size a "number" and divide bytes to get Megabytes
    _("uploaded_progress").innerHTML = "Загружено " + loaded.toPrecision(3) + " Мб из " + total.toPrecision(3);//String output
    var percent = (event.loaded / event.total) * 100;//Get percentage of upload progress
    _("progressBar").value = Math.round(percent);//Round value to solid
    _("status").innerHTML = Math.round(percent) + "% Загрузка";//String output
}

function completeHandler(event) {
    _("status").innerHTML = event.target.responseText;//Build and show response text
    _("progressBar").value = 0;//Set progress bar to 0
    
}

function errorHandler(event) {
    _("status").innerHTML = "Загрузка файла";//Switch status to upload failed
}

function abortHandler(event) {
    _("status").innerHTML = "Завершено";//Switch status to aborted
}
  • Вопрос задан
  • 645 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Основная проблема с вашим кодом - непонимание как работает связка клиент-сервер.
1) Вы пытаетесь получить переменную php в скрипте JS. Это разные языки, которые вы смешиваете
2) Для получения содержимой $_POST нужно выполнить код на сервере, вы же пытаетесь найти ее в коде, выполняемом на клиенте (в браузере).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
oOLokiOo
@oOLokiOo
PHP Developer
и, как минимум, я б сюда сходу добавил - абсолютное непонимание у человека об ЧПК...
это почти как ЧПУ - "Человекопонятные Урлы", ток - "Человекопонятный Код"!))
название функции - должно передавать свою суть, а не какую-то выдуманно-сокращённую лично тобою хрень в виде _

пускай другие люди лучше прочитают много раз getElementById, чем много раз будут потом лезть непонятно куда и вычитывать что твоё _ грёбанное, делает вообще...

ты дурила, вон тут, совсем мелкий кусок своего говнокода вырвал нам из контекста общего, так даже и тут нихрена не понятно, а представь что эта дичь потом разрастётся по всему проекту и вместо того, что б человеку сразу прочитать getElementById, он будет лазуть хрен пойми куда и там вычитывать, что твоё надуманное _ делает вообще бля...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы