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天