Cannot read properties of undefined (reading 'toUpperCase')

无法读取 JS 中未定义的属性“toUpperCase”|鲍比哈兹 (bobbyhadz.com)

根据其中的内容找到了答案:使用了未定义的属性去使用toUpperCase()函数

在学习黑马的AJAX视频中,到了封装自己的AJAX()函数这一节,跟随老师编写代码时的报错。在最开始封装时,我在想既然无论是旧版Jquery中$.Ajax()使用的type属性可以使用,还是说1.9新版的jQuery中$.Ajax()使用的method属性也可以使用。那在最新的$.ajax()中肯定包含了method与type的判断,所以我在视频教学基础上实现了这一想法,随后出现了以上编译器的报错。

在JS文件中自定义封装的Ajax部分代码如下:

    if (obj.method.toUpperCase() === 'GET' || obj.type.toLowerCase() === 'get') {
        xhr.open('GET', obj.url + '?' + readString)
        xhr.send()
    } else if (obj.method.toUpperCase() === 'POST' || obj.type.toLowerCase() === 'post') {
        xhr.open('POST', obj.url)

        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
        xhr.send(readString)
    } else {
        alert('GET或POST请求有误!')
    }
然而在HTML中的<script>标签里引用时忘记给data{}对象补上method属性,只添加了type键值对,问题代码如下:
    <script>
        ajaxXML({
            type: 'GET',
            // 因为测试的是type,所以添加method后随便赋上键值
    method: 'zi',
            url: 'http://www.liulongbin.top:3006/api/getbooks',
            data: {
                id: 1
            },
            success: function (res) {
                console.log(res)
            }
        })
    </script>
                                                                                                                                                                                                                     菜鸟成长第N天
 
posted on 2022-09-05 21:38  xiaoxiaowu1314  阅读(2499)  评论(0编辑  收藏  举报