Отправка файла с помощью jquery / ajax / php - PullRequest
0 голосов
/ 09 марта 2019

У меня проблема с моим файлом ajax для отправки. Похоже, что ничего не передано (ни переменные, ни файлы) в принимающий файл php.

Это моя форма:

<form id="ProtocolForm" enctype="multipart/form-data" method="post">
   <input name="ProtocolName" type="hidden" value="sdfsdf">
   <input name="ProtocolType" type="hidden" value="Image">        
   <input name="name_major" id="name_major" type="text">
   <input name="name_minor" id="name_minor" type="text">
   <input name="creator" id="creator" type="text">
   <input name="File" class="File" id="File" type="file">
   <input id="Submit" type="submit" value="Save Protocol">
</form>

Это мой код JS:

 $(document).on( "submit", "#ProtocolForm", function( event ) {
        event.preventDefault();

        var form = $('form')[0];  
        var formData = new FormData(form)

          $.ajax({
            url: "_save_protocol.php",
            type: "POST",
            data:  formData,
            contentType: false,
            cache: false,
            processData:false,
            beforeSend : function()
            {
                alert('before send:' + $('form').serialize());
            },
            success: function(data)
            {
                if(data=='invalid')
                {
                    alert('Invalid file');
                }
                else
                {                         
                    alert('Response:' + data);                     
                }
            },
            error: function(e) 
            {
                alert('Error '+ e);

            }          
            });


    });

Когда форма отправляется с предупреждением, я вижу все переменные, сериализованные в функции beforeSend. Однако, когда я пытаюсь получить доступ к переменным в файле php, они все пустые. $ _POST пусто, как и $ _FILES. Что мне не хватает? Любая помощь будет принята с благодарностью. Спасибо!

1 Ответ

0 голосов
/ 13 марта 2019

решена проблема; Проблема была не в Ajax, а в серверной части вещей. php.ini max_post_size не был установлен должным образом, и в результате сервер не обрабатывал почтовые запросы должным образом. Это исправлено и работает сейчас.

Чтение некоторых других вопросов по теме на этом сайте заставляет меня думать, что это довольно распространенная проблема, особенно для тех, кто пользуется услугами общего хостинга, как я. Надеюсь, что это помогает другим.

...