我遇到了一些ajax调用之一的怪异问题。只有一个ajax调用不起作用,这就是我设置代码的方式:
我有ajax核心调用和要在ajax函数上调用的单个端点函数。
function makeAjaxCall(_url, methodType, _data) {
var promiseObj = new Promise(function (resolve, reject)
{
if (_data == null) {
$.ajax({
type: methodType,
url: _url,
success: function (json) {
console.log("success - " + _url + " - " + JSON.stringify(json))
try {
resolve(json);
} catch (e) {
console.log(e);
}
},
error: function (xhr, status, error) {
console.log("error - " + _url + " - " + xhr.responseText);
reject(xhr.responseText);
}
});
} else {
$.ajax({
type: methodType,
url: _url,
data: _data,
success: function (json) {
resolve(json);
},
error: function (xhr, status, error) {
reject(error);
}
});
}
});
return promiseObj;
}
端点调用上面的ajax函数的函数
function getDataCodeApiCall(arg_one, resolved, rejected) {
try {
var endpoint = "/endpoint";
if (arg_one != null) {
url = api + endpoint + "?arg=" + arg_one;
} else {
url = api + endpoint;
}
makeAjaxCall(url, "GET", null).then(resolved, rejected);
} catch (e) {
console.error(e);
return "";
}
}
现在在其他javascript文件中,这是对终结点函数的主要调用,以调用主要ajax调用。这用于分配回调和发起呼叫。我还应该说api var只是基本url字符串。
getDataApiCall(null, getDataSuccess, getDataError);
成功回调函数为:
function getDataSuccess(info) {
try {
$.each(info, function (value, key) {
$('#dropdown').append($("<option />").text(key.id + " " + key.type).attr("id", key.id));
});
}catch(e){
alert(e);
}
}
,错误回调为:
function getDataError(info){
//error code
alert(info);
}
令人费解的是,当我添加调试器时,mainAjaxCall中的两个回调都是未定义的。问题是我还有4种方法在不同的端点上执行相同的操作。感谢您的进步!
编辑:api调用的返回也是:
[
{
"id":0,
"type":"string"
}
]