function idToUnitNum(id){
$.ajax({
type: "POST",
url: "ajax_officerFromId.php",
data: {'id': id},
success: function(dataString) {
ofd = JSON.parse(dataString);
var result = ofd.data;
console.log(result);
return result;
}
});
}
这是功能。它是从另一个函数调用的。我尝试通过在返回之前记录结果来测试它的输出,并显示相应的结果。
结果(JSON):
{"success":"true","time":1524462577,"data":"ADMIN"}
但是,当我尝试捕获变量(字符串)时,它显示为“未定义”。
这可能是一个愚蠢的错误。
调用该函数:
var unitnum = idToUnitNum(adata.arresting_officer);
console.log(unitnum);
感谢您的协助!
答案 0 :(得分:0)
将回调函数传递给idToUnitNum。类似下面的内容
function idToUnitNum(id,callback){
$.ajax({
type: "POST",
url: "ajax_officerFromId.php",
data: {'id': id},
success: function(dataString) {
ofd = JSON.parse(dataString);
var result = ofd.data;
console.log(result);
callback(result);
}
});
}
答案 1 :(得分:0)
嗨请改变这样的AJAX功能:
function idToUnitNum(id){
var dfd = $.Deferred();
$.ajax({
type: "POST",
url: "ajax_officerFromId.php",
data: {'id': id},
success: function(dataString) {
ofd = JSON.parse(dataString);
var result = ofd.data;
dfd.resolve(result);
// return result;
}
});
return dfd.promise();
}
你可以像这样使用这个功能
idToUnitNum(adata.arresting_officer).done(function(response){
console.log(response);
});
仅供参考:未测试代码
答案 2 :(得分:0)
function idToUnitNum(id){
var result = '';
$.ajax({
type: "POST",
url: "ajax_officerFromId.php",
async: false,
data: {'id': id},
success: function(dataString) {
ofd = JSON.parse(dataString);
result = ofd.data;
}
});
return result;
}
感谢无论谁建议我关闭异步并在AJAX请求之外调用它。解决了这个问题。
答案 3 :(得分:0)
你应该使用回调函数作为参数,或者更好的是使用promises。只需在ajax调用前面返回并在返回值上调用.then()以在结果可用时读取结果。
这已被多次询问,因此您不应该在找到有关这些解决方案的更多信息时遇到任何麻烦