为什么我的功能变成了一个对象?

时间:2017-05-05 12:19:51

标签: javascript ajax function

我的项目中有几个ajax请求,所以为了简化我的代码,我创建了一个处理请求的函数。

我正在传递一个成功函数,当状态为== 200时加载,但是即使数据正确发送我接收"未捕获类型错误成功不是函数"错误。使用typeof我可以看到成功作为一个函数开始,但随后显示为一个对象。

enter image description here

这是我的代码

//处理ajax请求的函数

function sendRequest(link, requestType, success, data) {
    var request = new XMLHttpRequest(),
        url = link;

    request.open(requestType, url, true);

    request.onload = function () {
        if (request.status >= 200 && request.status < 400) {
            console.log("success");

            var responseText = request.responseText;
            console.log(typeof(success));

            success(responseText);
        } else {
            consoloe.log("error");
        }
    }

    request.send(data);
}

//调用函数将成功函数作为参数传递

var jsonText = "json.php";

sendRequest(jsonText, 'GET', function (response) {
    var json = JSON.parse(response),
        postcodesArray = [],
        jsonLength = json.length,
        i;

    for (i = 0; i < jsonLength; i++) {
        postcodesArray.push(json[i].from_postcode);
    }

    var postcodes = postcodesArray.filter(Boolean),
        pstcodeLength = postcodes.length,
        n;

    for (n = 0; n < pstcodeLength; n++) {
        geocodeAddress(postcodes[n]);
    }
});

//包含我所有代码的编辑小提琴 https://jsfiddle.net/x1qe73s8/

1 个答案:

答案 0 :(得分:4)

阅读你的jsfiddle,你的代码可能会通过你有的sendLatLng函数

sendRequest(url, 'POST', null, data);

typeof null是“object”。