为什么我不能在设置xhr.setRequestHeader时发送FormData对象(' Content-Type',' application / x-www-form-urlencoded')

时间:2016-10-03 00:44:45

标签: javascript php ajax

我对ajax很新。目前正在学习如何运作!

因此在将表单传递给FormData时创建了一个新的FormData实例。 然后我经历了基本的ajax仪式:打开一个请求,设置请求标题,然后发送数据。

但是当我尝试使用var_dump在PHP中查看$ _POST数组时,我仍然得到了一个非常奇怪的响应。

// HTML FORM

  <form id="myForm" action="ajax_response.php" method="post">
    <input type="text" name="name">
    <button type="submit">submit</button>
  </form>

// JAVASCRIPT AJAX

var req = new XMLHttpRequest();
var fData = new FormData(myForm);

req.open('post','ajax_response.php',true);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send(fData);
req.onload = function() {
  document.write(this.responsText);
};

// PHP

if(isset($_POST)) {
  var_dump($_POST);
}

// RESPONSE 

 array (size=1)
   '------WebKitFormBoundaryAzMVL1V93W6RKYOA
 Content-Disposition:_form-data;_name' => string '"name"

 test
 ------WebKitFormBoundaryAzMVL1V93W6RKYOA--

&#39; 我后来通过评论req.setRequestHeader行得到了一个渴望的回应。

array (size=1)
  'name' => string 'test'

但我希望有人请向我解释为什么我无法通过Content-Type:application / x-www-form-urlencoded标头发送FormData。

0 个答案:

没有答案