2014-10-07 37 views
0

所以試圖讓兩個JSON請求發生在彼此之後,並且看起來像JavaScript執行了第一個請求,但從未嘗試第二個請求。在javascript中嵌套的JSON請求

所以,第一個詢問顏色,第二個請求值,代碼如下所示

(function() { 
    var mapKeyUrl = "/GenMap/getcountry/mapdata" 
    $.getJSON(mapKeyUrl, { 
     regsel: "${regsel}", 
     variable: "mapcolor" 
    }) 
    .done(function(coldata) { 
     console.log("JSON Data: " + coldata[1].value); 
     (function() { 
      mapKeyUrl = "/GenMap/getcountry/mapdata" 
      $.getJSON(mapKeyUrl, { 
       regsel: "${regsel}", 
       variable: "mapkey" 

      }) 
      .done(function(mapdata) { 
       console.log("JSON Map:" + mapdata) 
      }) 
     }) 

    }); 
})(); 

兩個請求返回有效的JSON數據,所以mapcolor例如:

[{"class":"genmap.Mapconf","id":55,"map":"0","reg":"FATCA","value":"#F0F0F0","variable":"mapcolor"},{"class":"genmap.Mapconf","id":56,"map":"1","reg":"FATCA","value":"#66CCFF","variable":"mapcolor"},{"class":"genmap.Mapconf","id":57,"map":"2","reg":"FATCA","value":"#0000FF","variable":"mapcolor"},{"class":"genmap.Mapconf","id":58,"map":"3","reg":"FATCA","value":"#CC66FF","variable":"mapcolor"},{"class":"genmap.Mapconf","id":59,"map":"4","reg":"FATCA","value":"#9900CC","variable":"mapcolor"},{"class":"genmap.Mapconf","id":60,"map":"5","reg":"FATCA","value":"#7D7D7D","variable":"mapcolor"}] 

mapkey返回一個類似的列表。

任何建議,需要運行其中三個,一個我有我需要重新組合它的所有數據。

+0

您是否嘗試了單步執行代碼以查看會發生什麼? – pquest 2014-10-07 12:25:40

+0

我的猜測是,你在第一次調用時會遇到「失敗」回調。嘗試添加一個 – Johan 2014-10-07 12:27:53

+0

你永遠不會調用第二個函數。在主函數的末尾有'})();'用'()'來調用它,但是在內部函數的末尾,你只需要使用'})' – Stryner 2014-10-07 12:28:23

回答

2
(function() { 
    mapKeyUrl = "/GenMap/getcountry/mapdata" 
    //... 
}) 

你定義了一個函數,但你永遠不會調用它,這就是爲什麼它不運行。

由於是在一個函數進行包裝,反正是沒有意義的,只是忽略它:

.done(function(coldata) { 
    console.log("JSON Data: " + coldata[1].value); 

    mapKeyUrl = "/GenMap/getcountry/mapdata" 
    $.getJSON(mapKeyUrl, { 
     regsel: "${regsel}", 
     variable: "mapkey" 

    }).done(function(mapdata) { 
     console.log("JSON Map:" + mapdata) 
    }); 

}); 
+0

很好看,非常感謝你。一直對JSON發誓,所以認爲這是另一個奇妙的JSON特別的,原來它是我忘記添加變種:) – vrghost 2014-10-07 12:37:25

+0

好吧,所以我改變它是一個變種,但似乎並沒有這樣做,還是我錯過了這一點?仍然只有一個響應 – vrghost 2014-10-07 12:44:56

+0

@vrghost更新了我的答案。它有助於在複雜的AJAX之前學習基礎知識。 ;)https://developer.mozilla.org/en/learn/javascript – jgillich 2014-10-07 13:47:39

1

請使用此功能裏面@ jgillich是right.you可以調用它就像你的父母函數來完成。 。

(function() { 
     mapKeyUrl = "/GenMap/getcountry/mapdata" 
     $.getJSON(mapKeyUrl, { 
      regsel: "${regsel}", 
      variable: "mapkey" 

     }) 
     .done(function(mapdata) { 
      console.log("JSON Map:" + mapdata) 
     }) 
    })();