麻烦老师看看哪里错了
var $ = {
ajax: function(options) {
var xhr = null, // XML对象
url = options.url, // url地址
method = options.method || 'get', // 传输方式
async = typeof(options.async) === "undefined" ? true : options.async,
data = options.data || null, // data接收数据
params = '', // post传给服务器的参数
callback = options.success, // ajax请求成功的回调函数
error = options.error;
// 将数据转换为字符串形式 username=123456&pwd=123456 (不转也行)
if (data) {
for (var k in data) {
params += k + '=' + data[k] + '&';
}
params = params.replace(/&$/, "") // 去掉尾部多出的&
}
// 根据method传输方式,改变url(get是在url中传参)
if (method === "get") {
url += '?' + params;
}
if (typeof XMLHttpRequest != 'undefined') {
xhr = new XMLHttpRequest();
} else if (typeof ActiveXObject != 'undefined') {
//将所有可能出现的ActiveXObject版本放在一个数组中
var xhrArr = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP.2.0', ];
// 遍历创建XMLHttpRequest对象
var len = xhrArr.length
for (var i = 0; i < len; i++) {
try {
//创建XMLHttpRequest对象
xhr = new ActiveXObject(xhrArr[i]);
break;
} catch (ex) {}
}
} else {
throw new Error('No XHR object availabel.')
}
// 响应XMLHttpRequest对象状态变化的函数,onreadystatechange在readystate属性发生改变时触发
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) { //异步调用成功,响应内容解析完成,可以在客户端调用
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
callback && callback(JSON.parse(xhr.responseText))
} else {
error && error();
}
}
}
// 创建请求
xhr.open(method, url, async);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
// 发送请求
xhr.send(params);
}
}
正在回答
同学你好,报错信息是跨域的问题,json文件需要在服务器下进行访问。可以使用课程中wampserver服务器或者给出的phpstudy服务器进行测试
另外这边测试代码是没有问题的,不需要修改。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星