여기서, 청동에서 다이아몬드에 필기 아약스의 중요성!

보리 대주교는 원숭이 세 보드 히트 말하는   다음 Wukong 배우 (72 명) -like 변경하고, 마법의 치료가 면접관으로이 문제를 더 깊이 더 의미하는 것은 할 수 있습니다에 대해 생각하는 것은 인정합니다

 

사실 아약스는 서면 게시 낮은 수준을 볼 수있는 코드의 여러 덩어리의 수준을 볼 수있다

 

코드 1 : 브론즈 레벨

VAR의 REQ = 새로운 XMLHttpRequest 객체 ();
req.open (사실, "mockData / usersinfo.json"을 "GET");
req.send ();
req.onreadystatechange = 함수 () {
    경우 (req.readyState의 == 4 && req.status의 == 200) {
        VAR 결과 = req.responseText;
    }
}

네이티브에 특히 일반적인 아약스   기능은 잘 기억 쓸 것을 반영 할 수있는 시뮬레이션 코드의 데이터를 얻기 위해 특히 간단한 기능입니다

 

코드 2 : 실버 수준

 기능 아약스 (유형, URL, 성공) {
    var에 REQ = 새로운 XMLHttpRequest의 ();
    req.open (유형, URL, TRUE);
    req.send ();
    req.onreadystatechange = 함수 () {
        경우 (req.readyState의 == 4 && req.status의 == 200) {
            VAR 결과 = req.responseText;
            성공 (결과);

        }
    }
}

아약스 ( "GET"에 "http : // localhost를 : 8055 / listcount.php 검색 = A?", 기능 (결과) {
    경고 (결과);
});

상기 부호  코드와 1 기능은 동일하지만, 코드 재사용이 완전히 달라진다 말할 수있다

정말로

어디에서 호출 할 수 있기 때문에 어디에서 호출

 

코드 3 : 골드 레벨

함수 AJAX JSON () {
    var에 REQ = 새로운 XMLHttpRequest 객체 ();
    VAR 타입 = JSON의 [ "타입"];
    VAR의 URL = JSON [ "URL"];
    JSON ([ "데이터"]) {경우
        "?"var에 HTML =;
        대 (VAR JSON I에서 [ "데이터"]) {
            HTML + = I + "="+ JSON [ "데이터"[I] + "및";
        }
        HTML html.substring = (0, html.length - 1);
        URL + = html로;
    }
    VAR 성공 JSON = [ "성공"];
    req.open (유형, URL, TRUE);
    req.send ();
    req.onreadystatechange = 함수 () {
        경우 (req.readyState의 == 4 && req.status의 == 200) {
            VAR 결과 = req.responseText;

                JSON.parse 결과 = (결과);
            }
            성공 (결과);
        }
    }
}
아약스 ({
    유형 : "GET"
    , "8055 / listcount.php HTTP : : : // localhost"를 URL
    } "L": {검색 : 데이터
    dataType와 : "json으로"
    성공 : 기능 (결과) {
        경고 ([ "계산"] 결과);

 }
});

위의 코드는 동일한 기능입니다 하지만 더 나은 느낌은 그것을 조금 소위 아니다 을 충족하지 않는 라 라 라 춤을 수있는 순간에 JQ 사용 아약스의 느낌

 

코드 4 : 다이아몬드 수준

var $ = {
    ajax: function (json) {
        var req = new XMLHttpRequest();
        var type = json["type"];
        var url = json["url"];
        if (json["data"]) {
            var html = "?";
            for (var i in json["data"]) {
                html += i + "=" + json["data"][i] + "&";
            }
            html = html.substring(0, html.length - 1);
            url += html;
        }
        var success = json["success"];
        req.open(type, url, true);
        req.send();
        req.onreadystatechange = function () {
            if (req.readyState == 4 && req.status == 200) {
                var result = req.responseText;
                if (json["dataType"] == "json") {
                    result = JSON.parse(result);
                }
                success(result);
            }
        }
    }
}

$.ajax({
    type: "get",
    url: "http://localhost:8055/listcount.php",
    data: {search: "l"},
    dataType: "json",
    success: function (result) {
        alert(result["count"]);
    }
});

怎么样 虽然写的是原生ajax  但是写出了jq底层代码的味道   跟jq中使用方式一模一样 参数 回调 封装  面面俱到  水平高低  一看就知道了 自己都会写 工作肯定也就会用 这才是钻石水平    还有更高级的星耀 就可以融入Promise 请求头配置等等

不要小看任意一道面试题  可能其中另有深意  体验自己的价值才能拿到更快拿到offer 

 

추천

출처www.cnblogs.com/lishixiang-007/p/11274777.html