Function 如何从具有$.ajax调用的函数返回结果

Function 如何从具有$.ajax调用的函数返回结果,function,jquery,return-value,Function,Jquery,Return Value,我会马上说,这似乎解决了同样的情况,但就我而言,我看不出有什么解决方案/答案。也许有人需要给我更清楚地“解释”一下 我有以下功能: function CheckIfUrlExists(checkUrl) { var exists = ''; $.ajax({ type: 'POST', url: '../scripts/branchAdmin.php', data: {checkUrl: checkUrl}, cac

我会马上说,这似乎解决了同样的情况,但就我而言,我看不出有什么解决方案/答案。也许有人需要给我更清楚地“解释”一下

我有以下功能:

function CheckIfUrlExists(checkUrl) {
    var exists = '';
    $.ajax({
        type: 'POST',
        url: '../scripts/branchAdmin.php',
        data: {checkUrl: checkUrl},
        cache: false,
        success: function(response) {
            console.log('response: ' + response);
            if (response === 'true') {
                exists = 'true';
            } else if (response === 'false') {
                exists = 'false';
            }
        },
        error: function(response) {
            // return false and display error(s) from server
            exists = 'false';
        }
    });

    console.log('exists: ' + exists); // always displays empty string, regardless of what the php script returns

    return exists;
}
我这样称呼它:

var exists = CheckIfUrlExists($tr.find('input.editUrl').val());

if (exists === 'false') {
    //if (!CheckIfUrlExists($tr.find('input.editUrl').val())) {
    // New URL entered, verify user want to save it
    $('#confirmAddNewUrlDialog').data('row', $tr).dialog('open');
    ... // code to handle result
}

如何让“CheckIfUrleExist()函数返回true或false(或与此相关的任何值),以便在上述代码中使用它?

将ajax调用异步选项设置为false。然后您将得到结果。 请参阅链接


答案的要点是,您不应该从这个函数返回结果。AJAX是异步的,因此函数在调用完成之前返回。您想做的任何事情都应该在回调中完成。明白了,Barmar。谢谢-功能现在可以根据需要工作了。
$.ajax({
        type: 'POST',
        async: false,
        url: '../scripts/branchAdmin.php',
...