JS函数包括AJAX返回undefined

时间:2018-04-23 05:43:35

标签: javascript php jquery ajax

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);

感谢您的协助!

4 个答案:

答案 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()以在结果可用时读取结果。

这已被多次询问,因此您不应该在找到有关这些解决方案的更多信息时遇到任何麻烦