2016-04-29 12 views
0

ここでいくつかの回答を見てきましたが、それらはすべてjQueryの.ajax()メソッドを使用しています。私はいくつかの成功と一緒に使用しているトリミングダウンバージョンであるバニラJSメソッドがあります。

 function ajax(options){ 
      var settings = { 
       method : 'POST', 
       url : 'endpoint.php', 
       data : null, 
       done : function(){}, 
       fail : function(){}, 
       complete : function(){} 
      }; 

      if(options) for(option in options) settings[option] = options[option]; 

      var xhttp = new XMLHttpRequest(); 
      xhttp.onreadystatechange = function(){ 
       if (xhttp.readyState == 4){ 
        if(xhttp.status == 200){ 
         settings.done(xhttp.responseText); 
        } else { 
         settings.fail(xhttp.responseText); 
        }; 
        settings.complete(xhttp.responseText); 
       }; 
      }; 
      xhttp.open(settings.method, settings.url, true); 
      xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
      xhttp.send(settings.data); 
     }; 

次は、このファイルを新しいFormData()オブジェクトに割り当てる関数です。

 function beginUpload(index){ 
      var file = files.files[index]; 
      var pkg = new FormData(); 
      pkg.append('file', file); 
      pkg.append('size', file.size); 
      ajax({ 
       data : pkg, 
       done : function(res){ 
        console.log(res); 
       } 
      }); 
     }; 

は今、ここで問題です:私が見つけたすべてのチュートリアルと例では、要求が完了した後、ファイルが$_FILESグローバル変数に発見されることを言います。私にはvar_dump()と20034の応答があり、私にとっては$_FILESは空ですが、$_POSTはありません。 $_POSTには、その内部のファイルのように見えます。すべてのphp.ini設定を確認しましたfrom this question

答えて

1
xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 

それを設定しないでください。 XHRはFormDataオブジェクトを認識し、正しい値に設定します(そうではありません)。

+0

ありがとう、ヘッダーは私を混乱させる。 –

関連する問題