javascript - Ajax 的 Onreadystatechange Return Uncaught Typeerror
问题描述
我是 ajax 的新手,正在尝试创建一个简单的 ajax 网页,但我遇到了这个问题
未捕获的类型错误:无法在 window.onload (test.js:4) 处设置未定义的属性“onreadystatechange”
这是我创建的 test.js 页面代码
window.onload = function(){
'use strict';
var ajax = getXMLHttpRequestObject();
ajax.onreadystatechange = function(){
if(ajax.readyState == 4){
if((ajax.status >= 200 && ajax.status < 300) || (ajax.status == 304)){
document.getElementById('output').innerHTML = ajax.responseText;
}else{
document.getElementById('output').innerHTML = 'Error ' + ajax.statusText;
}
}
};
document.getElementById('btn').onclick = function(){
ajax.open('GET', 'resources/test.txt', true);
ajax.send(null);
};
}
function getXMLHttpRequestObject(){
var ajax = null;
if(window.XMLHttpRequest){
ajax = new XMLHttpRequest();
}else if(window.ActiveXObject){
ajax = new ActiveXObject('MSXML2.XMLHTTP.3.0');
}
}
而这是名为 test.html 的 html 页面
<!DOCTYPE html>
<html>
<head>
<title>Ajax test</title>
</head>
<body>
<div><button type="button" id="btn">Run the test</button><br>
<p id="output"></p>
</div>
<script src ="js/test.js"></script>
</body>
</html>
同时,我试图在 XAMPP 上运行它
解决方案
我只是在两个函数的末尾返回了变量 ajax。
>
window.onload = function(){
> 'use strict';
> var ajax = getXMLHttpRequestObject();
> ajax.onreadystatechange = function(){
> if(ajax.readyState == 4){
> if((ajax.status >= 200 && ajax.status < 300) || (ajax.status == 304)){
> document.getElementById('output').innerHTML = ajax.responseText;
> }else{
> document.getElementById('output').innerHTML = 'Error ' + ajax.statusText;
> }
> }
> };
> document.getElementById('btn').onclick = function(){
> ajax.open('GET', 'resources/test.txt', true);
> ajax.send(null);
> };
> **return ajax;**
> }
> function getXMLHttpRequestObject(){
> var ajax = null;
> if(window.XMLHttpRequest){
> ajax = new XMLHttpRequest();
> }else if(window.ActiveXObject){
> ajax = new ActiveXObject('MSXML2.XMLHTTP.3.0');
> }
> **return ajax**
> }
推荐阅读
- sql-server - 在 varchar 数据类型上替换 .0
- google-cloud-sql - 使用 Terraform 在 Cloud SQL 中创建不是 cloudsqlsuperuser 的用户
- mysql - 如何获取MySQL中带有相应属性的表的最大值
- python - 可选参数无法识别
- ios - XCUITest:如何在使用 GraphQL 为应用程序创建 iOS UI 测试时设置特定状态?
- javascript - 如何在 useState 挂钩中创建一个字符串数组并在 TypeScript 中更新相同的数组?
- r - 如何在不读取 R 的情况下检查 SAS 数据(.sas7bdat)的行数
- json - 使用正则表达式在 JSON 文本文件中查找重复的数字和逗号
- python - SQL Alchemy 和 mySql DB - 连接太多
- java - 根据 JVM / JMM,给定数组索引处的非同步更新是否会干扰并发设置中相邻索引的值?