2013-05-06 53 views
1

我具備的功能返回數據形成的Ajax

function Get_Data(FileName) { 
    $.ajax({ 
     type: 'POST', 
     url: FileName, 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: 'json', 
     success: function (jsonData) { 
      alert("OK " + jsonData); // alert box1 
      return jsonData; 
     }, 
     error: function() { 
      alert('Error loading'); 
      return ""; 
     } 
    }); 
} 

在功能我有

var SS = Get_Data('Min_Required.asp?id=' + ID);

alert('ID = ' + SS[0].ID + ' SuppleName ' + SS[0].Sname); //alert box 2 

我知道數據這裏面 如果我在地址把Min_Required.asp?id=29酒吧我得到

[{"ID":10,"Sname":"Farm"}]  :) 
當它運行

消息框(alert box1)說OK「的翻譯:」這是在GET_DATA功能警報

但secord消息框不顯示:(:(

什麼我錯過了嗎?

+0

AJAX調用是異步的,因此在您的ajax調用完成之前該值已經返回。如果你想讓函數返回ajax響應,那麼你需要做出同步的AJAX請求。 – 2013-05-06 12:10:18

+0

進行同步Ajax調用將解決您的問題,但不是最佳實踐,您應該對您嘗試實現的內容更具體一點。 – MisterJ 2013-05-06 12:14:47

回答

2

async:false,作爲參數添加到ajax調用中。

+0

謝謝,我不得不把函數返回結束; – MYLE 2013-05-08 05:27:06

0

函數'Get_Data'中的ajax調用是異步的。第一條警報消息將在ajax調用成功完成時調用,而其他警報消息在「Get_Data」函數之外,單獨運行。

它與ajax調用和當前進程在單獨線程上運行時的線程類似。

作出必要的事可能,要麼使AJAX調用異步

async:false 

或將第二警報消息調用Ajax調用的成功回調中。