为什么我设置了setRequestHeader反而node接收不了

为什么我设置了setRequestHeader反而node接收不了

跟着老师学了后,发现2点问题老师没讲.作为基础课程,说实话.看完我还是不知道

  1. 需要给发送后端的接口怎么发送出去.

  2. post的时候,为什么要发送setRequestHeader. 

  3. setRequestHeader的实际作用又是什么.完全不明白. 课程中只是说添加头.为什么添加头呢?

  4. 课程中对于ajax封装那节课,拼接的字符串只是GET需要,而post直接用send发送对象形式的数据形式,也是我问了一个我认识的前端小姐姐才知道的.....如果我不看node的教学关联一下前后端,估计不要说学完找工作,估计面试就被刷下来了.谈什么就业班

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

emmm,一般在提交、或者是触发事件;

可以理解为是规定的,POST命令时,它还必须向服务器发送一个叫“Content-Length”的请求头(Request Header) 用以指明请求数据道的长度,除了Content-Length之外,它还可以向服务器发送其它一些Headers

setRequestHeader 的作用主要是:一个网络请求路由到目标机器后,目标机器总要知道它要请求什么,以什么编码方式传输,数据长度等信息,这是表头要表达的内容。

你是不是没有学过node呀,我建议先学一波再来研究,我看你这个代码涉及倒了跨域,解决不了哇~~~

提问者 qq_慕妹2226526 2020-05-23 14:43:28

<!DOCTYPE html>

<html lang="en">


<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>表单</title>

    <!-- <link rel="stylesheet" href="style.css"> -->

</head>


<body>

    <header>

        <h1>- - 账户信息 - -</h1>

    </header>

    <section>

        <p>

            <span>用户名:</span>

            <input type="text" name='Name' autocomplete="off" placeholder='4-8位字母,数字,下划线组合'>

            <span class="tishi A1">*必填</span>

        </p>

        <p>

            <span>登陆密码:</span>

            <input type="password" name='Pasword' autocomplete="off" placeholder='4-8位字母,数字,下划线,符号组合'>

            <span class="tishi A2">*必填</span>

        </p>

        <p>

            <input type="button" value="登录" name='denglu'>

        </p>

        <p>

            <input type="button" value="注册" name='zhuce'>

        </p>


    </section>


    <script>

        //创建AJAX


        function AJAX(url, method, async, data, functionName) {

            //------------------------------处理数据------------------------------//

            let str = '';

            data = data || null;

            if (data) {


                for (let dataName in data) {

                    str += dataName + '=' + data[dataName] + '&';

                }

                str = str.replace(/&$/, '');

            }

            if (method == 'get' || method == 'GET') {

                url += '?' + str;

            }

            //------------------------------创建TTP请求--------------------------//


            let HTTP = new XMLHttpRequest();

            HTTP.open(method, url, async);

            //     HTTP.setRequestHeader("Content-type", "application/x-www-form-urlencode");

            HTTP.send(data);


            //-------------------------------响应请求等--------------------------//

            HTTP.onreadystatechange = () => {

                //判断响应是否成功

                if (HTTP.readyState == 4) {

                    //判断响应状态码

                    if (HTTP.status >= 200 && HTTP.status < 300 || HTTP.status == 304) {

                        //结果返回

                        functionName(JSON.parse(HTTP.responseText));

                    }

                }

            }

        }


        var 登录 = document.querySelector('[value=登录]');

        var 注册 = document.querySelector('[value=注册]');

        var userName = document.querySelector('[name=Name]');

        var passWord = document.querySelector('[name=Pasword]');



        登录.onclick = () => {

            let data = {

                name: userName.value,

                wocao: passWord.value

            };

            let code;


            AJAX('http://localhost:8888/login/', 'get', true, data, function datas(code) {

                console.log(1111);

            });


        }

        注册.onclick = () => {

            console.log('我是注册');

        }

    </script>

</body>


</html>


  • 提问者 qq_慕妹2226526 #1
    node代码: let user = { admin: 12345 } //引入HTTP模块 const HTTP = require('http'); const URL = require('url'); const querystring = require('querystring'); //用createServer创建HTTP HTTP.createServer((req, res) => { //判断前端请求方式 let path, get, post; if (req.method == 'GET' || req.method == 'get') { let { pathname, query } = URL.parse(req.url, true); path = pathname; get = query; complete() } else if (req.method == 'POST' || req.method == 'post') { let arr = []; req.on('data', buffer1 => { arr.push(buffer1); }) req.on('end', () => { console.log(req.method); // post = querystring.parse(Buffer.concat(arr).toString()); console.log(arr); }) } function complete() { console.log(path); console.log(get); } }).listen(8888);
    2020-05-23 14:44:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师