2013-02-14 182 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

回答