这是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。当console.log()用于emailData返回值时,为什么$ _POST [‘email’]为null 。有人可以帮忙吗?我认为这个问题在后面。(不确定)
$_POST['email']
NULL
emailData
请不要jQuery 。我知道如何在jQuery中执行此操作,但我想学习如何在javascript中执行此操作。是的,谢谢
你的问题是,与FormData请求为发送multipart/form-data不application/x-www-form- urlencoded。删除设置内容类型的行。将FormData对象传递到时,将自动设置正确的内容类型XMLHttpRequest.send。
FormData
multipart/form-data
application/x-www-form- urlencoded
XMLHttpRequest.send