微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 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.当emailData的console.log()返回值时,为什么$_POST [’email’]为null.有人可以帮忙吗?我认为问题在于附加部分. (不确定)

请不要jQuery.我知道如何在jQuery中执行此操作,但我想学习如何在javascript中执行此操作.所以,谢谢

解决方法:

您的问题是,使用FormData,请求将作为multipart / form-data发送,而不是application / x-www-form-urlencoded.删除设置内容类型的行.将FormData对象传递给XMLHttpRequest.send时,将自动设置正确的内容类型.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐