我对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。