老师,我错哪里了

老师,我错哪里了

http://img1.sycdn.imooc.com//climg/5f4b5f1009e6a85916000368.jpg

http://img1.sycdn.imooc.com//climg/5f4b5f6c0979a53606030177.jpg

老师您好!

我跟源码兑了好几遍,地址也没错,就是报了这个错误;JSON.Parse is not a function     at XMLHttpRequest.xhr.onreadystatechange

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Register</title>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
  <div class="register">
     <p class="title">
        <span>登 录</span>
        <span class="current">注 册</span>
     </p>
     <div class="form">
        <div>
           <span>+86</span>
           <input type="text" name="user" id="user"
placeholder="请输入注册手机号" autocomplete="off" />
           <i id="user_icon"></i>
           <p class="info" id="user_info"></p>
        </div>
        <div>
           <input type="password" name="pwd" id="pwd"
placeholder="请设置密码">
           <i></i>
           <p class="info"></p>
        </div>
        <p class="button">
           <a href="javascript:void(0)" id="sigup-btn"
class="btn">注册</a>
        </p>
     </div>
  </div>
  <script type="text/javascript" src="ajax.js"></script>
  <script type="text/javascript">
var user = document.getElementById("user"),
pwd = document.getElementById("pwd"),
sigup = document.getElementById("sigup-btn"),
userInfo = document.getElementById("user_info"),
userIcon = document.getElementById("user_icon");

// 检测用户
function checkUser(){
var userVal = user.value,
userReg = /^1[3578]\d{9}$/;   // 手机号正则
// 验证手机号是否有效
if (!userReg.test(userVal)){
userInfo.innerHTML = "手机号码无效!";
userIcon.className = "no";
        }else{
userInfo.innerHTML = "";
userIcon.className = "";
// 发起请求
$.ajax({
url:"http://localhost/ajax/register/server/isUserRepeat.php",
method:"post",
async:true,
data:{username:userVal},
success:function (data) {
console.log(data);
              }
           });
        }
     }
// 绑定事件,检测用户是否注册过
user.addEventListener("blur",checkUser, false);
</script>
</body>
</html>

----------------------------------------------------------------------------------------------------------------

var $ = {
  ajax:function (options) {
     var xhr = null,
        url = options.url,
        method = options.method || "get",
        async = typeof(options.async) === "undefined"?true:options.async,
        data = options.data || null,
        params = "",   // 传输参数
        callback = options.success,  // ajax请求成功的回调函数
        error = options.error;
     // 将data的对象字面量的形式转换为字符串形式
     if (data){
        for (var i in data){
           params += i + "=" + data[i] + "&";  // i 为键, data[i]为 值
        }
     }
     // 根据method的值改变url
     if (method === "get"){
        url += "?" + params;
     }
     if (typeof XMLHttpRequest != "undefined"){
        xhr = new XMLHttpRequest();
     }else if (typeof ActiveXObject != "undefined"){
        // 将所有可能出现的ActiveXObject版本放在一个数组中
        var xhrArr = ["Microsoft.XMLHTTP","MSXML2.XMLHTTP6.0",
           "MSXML2.XMLHTTP5.0","MSXML2.XMLHTTP4.0",
           "MSXML2.XMLHTTP3.0","MSXML2.XMLHTTP2.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");
     }
     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-urlencode");
     xhr.send(params);
  }
  // jsonp:function () {    也可以绑定跨域
  //
  // }
};


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

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

4回答
好帮手慕码 2020-08-31 13:41:40

同学你好,老师又测试了下,代码问题如下:

http://img1.sycdn.imooc.com//climg/5f4c69a40922d51306620319.jpg

同学可以修改试一下,祝学习愉快~

好帮手慕码 2020-08-31 09:57:39

同学你好,测试代码没有出现同学粘贴截图的那个报错的,如下:

http://img1.sycdn.imooc.com//climg/5f4c5865094fdce015600341.jpg

(使用源码中的css测试)

http://img1.sycdn.imooc.com//climg/5f4c584b096fd6bb17030424.jpg

并且,报错是在script.js中触发的,你的代码并没有引入script.js,可以能是浏览器缓存问题。建议清除浏览器的缓存再试一下:

http://img1.sycdn.imooc.com//climg/5f4c58e509766db803690479.jpg

http://img1.sycdn.imooc.com//climg/5f4c58fc09221dc412400660.jpg

祝学习愉快~

  • 提问者 沉木岩 #1
    引入了的,就是下面的代码,代码中昨天我以为是命名的问题,就把script.js改正了ajax.js,路径也改成了ajax.js,但是截图是先截的,报错一样就没有重新截图,所以是scrit.js:47 ,换了 firefox浏览器也是这个错误: JSON.Parse is not a function at XMLHttpRequest.xhr.onreadystatechange
    2020-08-31 10:26:42
  • 提问者 沉木岩 #2
    而且,老师,很奇怪的是我把下载下来的 ajax.js 源码导进来,出现的同样也是这个错误,所以这个错误会不会是在别的地方,而不在js文件里面
    2020-08-31 10:33:33
好帮手慕码 2020-08-30 19:06:22

同学你好,测试如上代码没有报错哦。因为同学没有提供script.js,所以无法准确测试,建议粘贴script.js代码到问答区域进行测试。

祝学习愉快~

  • 提问者 沉木岩 #1
    老师,上面的就是ajax和html、js文件一起的,中间我用了----隔开了
    2020-08-30 19:21:19
好帮手慕码 2020-08-30 17:32:57

同学你好,测试如上代码没有报错。查看报错,是在script.js中触发的:

http://img1.sycdn.imooc.com//climg/5f4b719c09fe2e9108170208.jpg

但是同学没有粘贴相关代码,可以看下这块内容是否写的有问题:

http://img1.sycdn.imooc.com//climg/5f4b71b909c1945607880284.jpg

如果找不到问题的话,建议将script.js粘贴到问答区域进行测试哦。

祝学习愉快~

  • 提问者 沉木岩 #1
    没辙了,跟源码兑了一遍又一遍:
    2020-08-30 18:26:07
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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