Это 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; } } };