2013-02-14 100 views
0

我会马上说出this question似乎解决相同情况的蝙蝠,但对于我的生活,我没有看到解决方案/答案是什么那里。也许有人需要为我更清楚地“拼出来”!

我有以下功能:

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 
} 

我怎样才能获得“CheckIfUrlExist()函数返回一个true或false(或任何值),所以我可以在上面的代码中使用它?

+0

答案的重点在于您不应该返回此函数的结果。 AJAX是_asynchronous_,所以函数在调用完成之前返回。无论你想做什么都应该在回调中完成。 – Barmar 2013-02-14 16:43:28

+0

明白了,巴尔玛。谢谢 - 功能现在按需要工作。 – marky 2013-02-14 17:20:30

回答