XMLHttpRequest Почтовые данные не отправляются

Это javascript:

function eAC(emailData) { if (window.XMLHttpRequest) { httpRequest = new XMLHttpRequest(); } if (!httpRequest) { return false; } console.log(emailData); var fd = new FormData(); fd.append("email", emailData); httpRequest.onreadystatechange = eAC_callback; httpRequest.open('POST', "http://website.com/file.php"); httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); httpRequest.send(fd); } function eAC_callback() { if (httpRequest.readyState === 4) { if (httpRequest.status === 200) { var response = JSON.parse(httpRequest.responseText); console.log(response); } else { return false; } } }; 

Это php:

 $pec_result = array(); if(isset($_POST['email']) && strlen($_POST['email']) > 0){ $pec_result['error'] = 'Its good'; echo json_encode($pec_result); die(); } else { $pec_result['error'] = $_POST['email']; echo json_encode($pec_result); die(); } 

Проблема здесь в том, что $_POST['email'] имеет значение NULL . Почему $ _POST ['email'] null, когда console.log () для emailData возвращает значение. Может ли кто-нибудь помочь? Я думаю, что проблема находится в добавочной части. (Не уверен)

Пожалуйста, не jQuery . Я знаю, как это сделать в jQuery, но я хочу узнать, как это сделать в javascript. Так что спасибо

Ваша проблема в том, что с FormData запрос отправляется как multipart/form-data not application/x-www-form-urlencoded . Удалите строку, в которой вы указываете тип контента. Правильный тип контента будет установлен автоматически при передаче объекта FormData в XMLHttpRequest.send .

попробуйте это (EDITED)

 fd='email='+emailData; 

полный код:

 function eAC(emailData) { if (window.XMLHttpRequest) { httpRequest = new XMLHttpRequest(); } if (!httpRequest) { return false; } console.log(emailData); // var fd = new FormData(); // fd.append("email", emailData); fd='email='+emailData; httpRequest.onreadystatechange = eAC_callback; httpRequest.open('POST', "http://website.com/file.php"); httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); httpRequest.send(fd); } function eAC_callback() { if (httpRequest.readyState === 4) { if (httpRequest.status === 200) { var response = JSON.parse(httpRequest.responseText); console.log(response); } else { return false; } } };