2012-05-09 128 views
1

獲取JSON數據,我在JavaScript創建對象:如何從REST API

var t = null; 
      $.getJSON('http://localhost:53227/Home/GetData', function (data) { 
       alert(data); 
       t = data; 
      }); 
      alert(t); 

當我警報數據,我得到一個對象返回。 當我提醒t時,它是空的。

您可以請指導,如何設置「t」到返回的數據?

回答

7

這將按預期工作 - 問題不在於t未設置,而是因爲您在執行getJSON回調之前正在執行alert(t)。嘗試後立即t = data;

換句話說做alert(t),這裏是你目前的操作順序:

  1. 集T = NULL
  2. 呼叫服務器腳本
  3. 警報(T) - > t是仍然空值!
  4. (一定量的時間以後)接收JSON響應
  5. 警報數據
  6. 組T =數據

......你可以看到,在步驟3 'T' 仍然將是無效的。試試這個:

var t = null; 

$.getJSON('http://localhost:53227/Home/GetData', function (data) { 
    alert(data); 
    t = data; 
    alert(t); 
}); 

乾杯

+1

它可能不會正常工作,由於同源策略(不同的端口)。 –

+0

如果它是相同的主機,它應該工作。否則,你需要使用[JSONP](http://en.wikipedia.org/wiki/JSONP) – lukecampbell

+1

總有非sequiter有傢伙,請不要分心op的問題 - 這與同源,沒有任何關係, JSONP等沒有冒犯,但我們不要混淆事物。 Op按預期收到「數據」:「當我提醒數據時,我收到一個對象」。移動...沒有什麼在這裏看到... :) – Madbreaks