我的项目中有几个ajax请求,所以为了简化我的代码,我创建了一个处理请求的函数。
我正在传递一个成功函数,当状态为== 200时加载,但是即使数据正确发送我接收"未捕获类型错误成功不是函数"错误。使用typeof我可以看到成功作为一个函数开始,但随后显示为一个对象。
这是我的代码
//处理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/
答案 0 :(得分:4)
阅读你的jsfiddle,你的代码可能会通过你有的sendLatLng函数
sendRequest(url, 'POST', null, data);
typeof null是“object”。