Before you close this as dupe: It's not the regular var passing here I guess.
I have this function and I'm kinda stuck. I want to return from inside the each of the ajax result:
function isInCat(cat, check) {
    var toReturn;
    var toReturnOutside;
    $.ajax({
        type: 'POST',
        url: 'http://www.mediawiki.org/w/api.php',
        dataType: 'json',
        data: {
            format: 'json',
            action: 'query',
            prop: 'categories',
            titles: 'Category:' + cat
        }
    }).done(function (data) {
        console.log( data);
        var toReturnOutside;
        var res = data["query"]["pages"];
        $.each(res, function (i, item) {
            var inCat = "";
            inCats0 = item.categories[0];
            if (inCats0) {
                var inCat = inCats0.title;
                if (inCat == "Category:" + check) {
                    console.log(cat + " = " + check); // works
                    // return cat;
                    toReturnOutside = cat; // doesn't go outside :(
                    return false; // stop loop
                }
            }
        });
        toReturn = toReturnOutside;
    });
    return toReturn; // "MediaWiki components" 
}
The call:
var catToTest = "Edit",
    parentToTest = "MediaWiki components";
var val = isInCat(catToTest, parentToTest); // "MediaWiki components", returns undefined
if ( val == parentToTest) {
    $("body").append(catToTest + ' is in Category ' + parentCatToTest);
}
The data result:
{
    "batchcomplete": "",
    "query": {
        "pages": {
            "17443": {
                "pageid": 17443,
                "ns": 14,
                "title": "Category:Edit",
                "categories": [
                    {
                        "ns": 14,
                        "title": "Category:MediaWiki components"
                    }
                ]
            }
        }
    }
}
The problem may lay in var res = data["query"]["pages"]; but I cannot access to the deeper levels otherwise :/
Non working jsfiddle: http://jsfiddle.net/zro716Le/ (Access-Control-Allow-Origin). Tesing in Tampermonkey works: http://jsfiddle.net/zro716Le/1/
