2012-01-16 17 views
1

我不知道,如果我們能做到像jQuery:如何將2個請求的結果加入json服務器?

var joinedJSON; 
$.get("server.json?action=type&type=image", function(json) {joinedJSON +=json ; } 
$.get("server.json?action=type&type=jpg", function(json) {joinedJSON +=json ; } 
$.get("server.json?action=type&type=png", function(json) {joinedJSON +=json ; } 
$.get("server.json?action=type&type=tiff", function(json) {joinedJSON +=json ; } 

的東西,而每一個請求會提供給我們說這樣的JSON數據:

[ 
    { 
     "href": "bf051e8675b11c72eec781e855593589a086d2295378b96a8b7269c31b8fa673.user.file", 
     "title": "Привет Мир.jpg", 
     "user_name": "[email protected]", 
     "modified": "2012-01-16 07:24:11", 
     "is_public": 0, 
     "size": 65516 
    }, 
    { 
     "href": "abd01be9a0830579d6366e48fc0c48d4c7cc350d80719843ca84c782346626f6.user.file", 
     "title": "", 
     "user_name": "[email protected]", 
     "modified": "2012-01-16 07:24:19", 
     "is_public": 0, 
     "size": 89782 
    }, 
    { 
     "href": "0a27fd3b563b2877c3a072648e0f7c2a57539f3aba4ce688c7774eca6b70774e.user.file", 
     "title": "Привет Мир 2.jpg", 
     "user_name": "[email protected]", 
     "modified": "2012-01-16 07:24:29", 
     "is_public": 1, 
     "size": 58574 
    } 
] 

我們會得到銘記,有些項目可能會重複一個多頭排列(C++中的multymap)作爲結果?

+0

原則上你可以做到這一點。但是,您可能必須手動編寫一些膠水代碼。特別是,由於JSON數據沒有足夠的語義來允許自動完成此操作。 – 2012-01-16 07:37:19

回答

3

請注意,在數組中添加操作+未在Javascript中定義。它不是將數組擴展到另一個數組,而是將它們強制轉換爲字符串並連接起來。

[1,2,3] + [4,5,6] // will produce '1,2,34,5,6' 

您應該使用concat代替

[1,2,3].concat([4,5,6]) 

另請注意,$.get是一個異步函數。如果您只是使用您提供的代碼對它們進行序列化,則無法知道所有請求何時完成。相反,您應該嘗試在前一個回調函數中發出每個請求。這可以確保每個請求都在收到前一個響應之後進行。

var joinedJSON = []; 
$.get("server.json?action=type&type=image", function(json) { 
    joinedJSON.concat(json); 
    $.get("server.json?action=type&type=jpg", function(json) { 
    joinedJSON.cancat(json); 
    } 
} 

如果發現嵌套回調醜,你可以考慮使用the async module

1

只要您(或您的代碼)解析返回的JSON字符串轉換爲可以使用.concat()來Concat的這兩個陣列陣列成一個

var jsontotal = json1.concat(json2);