javascript函数未返回正确的值

javascript function not returning correct value

本文关键字:返回 函数 javascript      更新时间:2023-09-26

我有一个检查英国邮政编码的函数。问题是它从不返回truefalse——只返回undefined

function PostcodeAnywhere_Interactive_FindByPostcode_v1_00(Key, Postcode, UserName) {
    var retval;
    $.getJSON("https://services.postcodeanywhere.co.uk/PostcodeAnywhere/Interactive/FindByPostcode/v1.00/json3.ws?",
    {
        Key: Key,
        Postcode: Postcode,
        UserName: UserName
    },
    function (response) {
        // Test for an error
        if (response.Items.length == 1 && typeof(response.Items[0].Error) != "undefined") {
            // Show the error message
            retval = false;
        } else {
            // Check if there were any items found
            if (response.Items.length == 0){
                retval = false;
            } else {
                retval = true;
            }
        }
    });
return retval;
}

对我来说,它看起来应该总是返回truefalse,所以我不明白哪里出了问题。有人能帮忙吗?是不是getJSON函数需要时间来执行?

它返回undefined,因为$.getJSON异步运行,因此在执行$.getJSON的成功函数之前返回retval。如果需要使用retval,则必须在回调中调用使用它的函数

   $.getJSON("https://services.postcodeanywhere.co.uk/PostcodeAnywhere/Interactive/FindByPostcode/v1.00/json3.ws?",
    {
        Key: Key,
        Postcode: Postcode,
        UserName: UserName
    },
    function (response) {
        // Test for an error
        if (response.Items.length == 1 && typeof(response.Items[0].Error) != "undefined") {
            // Show the error message
            retval = false;
        } else {
            // Check if there were any items found
            if (response.Items.length == 0){
                retval = false;
            } else {
                retval = true;
            }
            //use retval
            do_something_with_retval(retval);
        }
    });