2013-05-08 42 views
0

我不知道下面是一個有效的問題嗎?或者只是我的愚蠢。回調函數後返回值不工作

function IsSlaExists(department) { 
    var flag = ""; 
    $.ajax({ 
     type: "POST", 
     data: "Type=ISSLAEXISTS&Department=" + encodeURI(escape(department)), 
     url: "class-accessor.php", 
     success: function (data) { 
      //flag=data; 
      flag = "YES"; 
     } 
    }); 
    return flag; 
} 

alert(IsSlaExists('department')); 

我試圖返回flag價值,但函數返回空白即使我設置標誌的值maually。 我做錯了什麼?

+0

你確定Ajax請求沒有工作的權利?如果添加失敗請求的函數會發生什麼? – reporter 2013-05-08 13:06:03

+0

Ajax請求(幾乎)總是異步的,所以你的'return'語句是在POST請求有時間完成之前發生的。 – Graham 2013-05-08 13:06:47

+0

你爲什麼不嘗試在回調函數內部提醒標誌? – Shin 2013-05-08 13:09:35

回答

0
$.ajax({ 
     type: "POST", 
     data: "Type=ISSLAEXISTS&Department=" + encodeURI(escape(department)), 
     url: "class-accessor.php" 
}).done(function(r){ 
     alert("flag"); 
}); 

當AJAX請求成功時,這會給你警報。 r將包含響應得到您的數據。例如,您現在可以在處理請求的done函數中調用另一個函數。

由於$就返回一個promise,你可以只返回Ajax調用,然後鏈中的功能結合在一起

function ajaxCall(department) { 
    return $.ajax({ 
      type: "POST", 
      data: "Type=ISSLAEXISTS&Department=" + encodeURI(escape(department)), 
      url: "class-accessor.php" 
    }); 
} 

ajaxCall("myDept").done(function(response){ 
    alert(response); 
}) 
+0

請理解我的優點;我想要一個我可以用來返回值的函數。在替代你的解決方案,我可以簡單地使用'阿賈克斯成功'。我想通過某種方式,我可以像'var val = ajaxCall('Dep');'返回值 – 2013-05-08 13:45:46