XMLHttpRequest 发 Post 请求

1.例子
参考:https://blog.csdn.net/owen_william/article/details/51337973

2.FormData 和 Payload
使用XMLHttpRequest时,直接在send 函数中写字符串,和 使用formData是不同的

function send(userid,name,node,href,asyn) {
    var xmlhttp=new XMLHttpRequest();
    var url=url_ban;
    
    ////直接send字符串或者json串,F12 中会显示请求格式为Payload
    //var content=JSON.stringify({"people":userid,"ck":ck});
    //var content="people="+userid+"&ck="+ck
    //xmlhttp.send(content);
    
    //使用FormData
    var fd = new FormData();
    fd.append("people",userid);
    fd.append("ck",ck);
    xmlhttp.open("POST",url,asyn); //第三个参数是同步异步,主线程只能异步
    xmlHttp.withCredentials = true; // 默认不携带cookie,要把withCredentials 设为true,才会带cookie
    //xhr.setRequestHeader("Content-Type", "application/json");
    xmlhttp.send(fd);
}

3.请求是异步时,可以加回调函数
函数中,可以查看请求当前的状态,比如这样:

xmlhttp.onreadystatechange=function(){
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200 ) {
        unban(userid,name,node,asyn);
    }
};

这个函数在每次状态改变是都被会调用。
状态的说明:1

状态 名称 描述
0 Uninitialized 初始化状态。XMLHttpRequest 对象已创建或已被 abort() 方法重置。
1 Open open() 方法已调用,但是 send() 方法未调用。请求还没有被发送。
2 Sent Send() 方法已调用,HTTP 请求已发送到 Web 服务器。未接收到响应。
3 Receiving 所有响应头部都已经接收到。响应体开始接收但未完成。
4 Loaded HTTP 响应已经完全接收。

参考:(这两篇都不太好,将就看吧)
https://blog.csdn.net/u010216786/article/details/53168079
https://www.cnblogs.com/darkterror/p/6555594.html


  1. http://www.w3school.com.cn/xmldom/dom_http.asp ↩︎

你可能感兴趣的:(js)