2013-08-20 113 views
2

我正在嘗試使用客戶端的API來讓我檢索一組json格式的訂單。我可以使用下面的代碼顯示三個警報框。第一個框顯示200(假設這是HTML成功代碼),然後我得到一個空白的警報框,然後第三個框說:[對象對象]。JavaScript MVC解析JSON

在Chrome中,如果我使用F12鍵並轉到網絡預覽,我會看到三個部分,包含包含訂單部分的正文部分的狀態。訂單部分有50個訂單。每個訂單都有如下屬性:order_type:「Pickup」等。我的問題是如何迭代實際訂單。我不知道達到訂單的語法以及訂單內的屬性。

我的最終目標是循環所有50個訂單,將一些訂單屬性分配給JavaScript變量,然後將其傳遞給一個MVC控制器,該控制器將該訂單插入到我的數據庫中。基本上通過API從客戶端數據庫獲取訂單並將其存儲到本地數據庫中。我猜測我會在第一個.each循環中使用另一個ajax調用,通過調用一個將執行數據庫插入的MVC控制器來將幾個訂單屬性發布到我的數據庫中?

非常感謝您的幫助。

$.ajax({ 
    type: 'GET', 
    url: 'https://api.customer.com/2000105850/orders.json?v=1&key=12345', 
    success: function (data) {       
     $.each(data, function (index, element) { 
      alert(element); 
     }); 
    } 
}); 
+0

這是來自客戶端的API文檔:{ 「計數」:number_of_orders_in_response, 「PAGE_NUMBER」:page_number_within_paginated_result_set, 「PAGE_SIZE」:number_of_orders_per_page, 「訂單」:array_of_Order_objects] } –

+0

訂單信息中返回訂單鍵下的JSON數組。數組的每個成員都是Orders類型的JSON對象。訂單類型在本文檔的類型部分中描述。 –

+0

FROM API DOCS:密鑰\t描述 狀態\t值將始終等於HTTP響應代碼值。成功的請求將返回狀態碼200.本文檔中介紹了其他可能的狀態碼。 錯誤\t值可能包含處理請求時可能發生的任何錯誤或警告的文本​​說明。 正文\t值將包含成功請求的請求信息。 –

回答

2

第一個參數。前200個警報將是計數(number_of_orders_in_response)。你用$ .each做的是遍歷對象的屬性,而不是命令。這些訂單是數據對象上的一個屬性。所以data.orders是你想要的數組。

試試這個:

$.ajax({ 
    type: 'GET', 
    url: 'https://api.customer.com/2000105850/orders.json?v=1&key=12345', 
    success: function (data) {       
    var orders = data.orders; 
    var i = orders.length; 
    while (i--) { 
     alert(orders[i].order_type); 
    } 

    } 
}); 

此外,它看起來像有分頁參與。因此,編寫腳本時需要考慮到這一點,以確保捕獲所有可用的頁面,而不僅僅是第一頁。

+0

成功:function (數據){ 警報( '成功'); VAR命令= data.orders; 變種I = orders.length; 而(我 - ){ 警報( '訂單'); // 警報(訂單[一世]。訂單號); } } –

+0

顯示第一個提示'成功',但while循環內的下一個提示不會出現。我確信我正在接近您的幫助,但無法訪問個別訂單。我使用API​​ doc文件中的數據在問題註釋部分發布了更多的數據。 –

+0

做成功:function(data){alert(JSON.parse(data)); }所以你可以查看你回來的實際對象。此外,使用控制檯而不是警報更容易。的console.log(JSON.parse(數據)); –

1

變化。每$從數據到根據您所提供的信息data.orders

+0

當我更改該行的JS爲:$ .each(data.orders,function(index,element){我從Chrome DevTools中得到以下錯誤消息:Uncaught TypeError:無法讀取未定義的屬性「長度」 –