2014-10-13 3 views
1

Я привел пример How can I upload files asynchronously?, который является отличным примером BTW.Загрузка нескольких файлов с помощью Ajax, не делая POST

По какой-то причине мой POST не попадает в мой php-файл. Даже когда я print_r($_POST), массив становится пустым. Я пытаюсь передать 2 поля с этим скриптом.

Если я просто сделаю echo "test"; на моем php-файле, он вернет эту строку.

Я также попытался var formData = new FormData($('form').serialize());

<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $(':button').click(function(){ 
     var formData = new FormData($('form')[0]); 
     $.ajax({ 
      url: 'inserttest.php', //Server script to process data 
      type: 'POST', 
      xhr: function() { // Custom XMLHttpRequest 
       var myXhr = $.ajaxSettings.xhr(); 
       if(myXhr.upload){ // Check if upload property exists 
        myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // For handling the progress of the upload 
       } 
       return myXhr; 
      }, 
      success: function(data) { 
       alert(data);  
      }, 
      data: formData, 
      cache: false, 
      contentType: false, 
      processData: false 
     }); 
    }); 
}); 
function progressHandlingFunction(e){ 
    if(e.lengthComputable){ 
     $('progress').attr({value:e.loaded,max:e.total}); 
    } 
} 
</script> 
</head> 
<form enctype="multipart/form-data"> 
    <input type="text" name="words" id="words" /> 
    <input name="file" type="file" id="file" /> 
    <input type="button" value="Upload" /> 
</form> 
<progress></progress> 

принял это еще один шаг и сделал это долгий путь с formData ... до сих пор не повезло

var words = $('#words').attr('value'); 
var file = $('#file').attr('value'); 
var formData = new FormData(); 
formData.append("words", words); 
formData.append("file", file); 

inserttest.php

Прочитано

<?php 
echo print_r($_POST); 
?> 

и

<?php 
echo print_r($_FILES); 
?> 
+0

Вы найдете свои файлы через ['$ _FILES'] (http://php.net/manual/en/reserved.variables.files.php) superglobal –

+0

Я только что изменил свой php на' echo print_r ($ _FILES); 'и он по-прежнему возвращается в виде пустого массива. –

+0

Возможно, вам стоит взглянуть на журналы вашего веб-сервера, возможно, ваши настройки PHP или серверов необходимо устранить, многие возможности включают тайм-аут, ограничение памяти, ограничение размера сообщения , перекрестная защита домена, список можно продолжить. – tremor

ответ

0

версия Jquery вы используете устарел и не поддерживает эту функцию!
Изменение версии 1.3.0:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
... до версии 1.9.1:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
... и это работает !! : D

Смежные вопросы