老师,这个练习题我不知道哪出错了,您帮我看看哪有问题?

老师,这个练习题我不知道哪出错了,您帮我看看哪有问题?

https://img1.sycdn.imooc.com//climg/6343d87609232d7f07680350.jpg

我写的代码如下所示:

<body>


    <form action="" method="post">

        <input type="button" value="提交" id="butn1" name="表单01">

    </form>

   

    <script>

        //获取事件元素

        const butn = document.getElementById('butn1');

       

        //绑定点击事件

        butn.onclick = () => {

            const url = 'https://www.imooc.com/api/http/json/search/suggest?words=js';

            const xhr = new XMLHttpRequest();

            butn.onload = function () {

                xhr.addEventListener('load', () => {

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

                        console.log(xhr.response);

                        console.log('响应数据可正常使用');

                        console.log(JSON.parse(xhr.responseText));

                    }

               }, false);


            xhr.open('POST',url,true);

            //设置JSON格式的请求头;

            xhr.setRequestHeader('Content-Type','application/json');

            //发送一个对象类型的数据,对象内容为:username:'imooc'。

            xhr.send(JSON.stringify({username:'imooc'}));

            };

        }


    </script>



</body>


代码运行后的结果如下:

https://img1.sycdn.imooc.com//climg/6343dbc609d5b09f07740415.jpg

https://img1.sycdn.imooc.com//climg/6343dc140965989612320986.jpg

老师,麻烦您看看是哪出问题了呢?

正在回答 回答被采纳积分+1

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

1回答
好帮手慕慕子 2022-10-10 16:58:43

同学你好,问题解答如下:

1、截图中查看的是并不是提交按钮是发送的请求

https://img1.sycdn.imooc.com//climg/6343ddfc099da1c416621328.jpg

2、因为将发送请求的代码放在了butn的onload事件中,而butn并没有load事件,所以事件函数中的代码不会执行,导致没有效果。

建议修改:去掉butn.onload事件

https://img1.sycdn.imooc.com//climg/6343de7f099a04d916521446.jpg

点击按钮时发送的请求,结果如下:

https://img1.sycdn.imooc.com//climg/6343deb909ab498a20901284.jpg

祝学习愉快~


  • 老师,我按照您的要求改了一下,然后运行下发现多出了两个这个,您看看https://img1.sycdn.imooc.com//climg/6343f41f097754f110470852.jpg

    前面的代码还有没有其他地方错误呀?

    2022-10-10 18:30:16
  • 同学你好,代码没错,因为发送的是post请求,浏览器默认会有一个预请求机制。即:使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求。可以检查看下,示例:

    https://img1.sycdn.imooc.com//climg/6343f5c40960ec1021160962.jpg

    祝学习愉快~

    2022-10-10 18:40:39
  • 好的,谢谢老师。

    2022-10-10 23:14:09
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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