我一直在此停留一天,現在我瘋了。可能很簡單,但在這裏。無法訪問JSON數組對象,令我瘋狂駕駛
我有一個jQuery.Ajax方法,它調用WebMethod來檢索Orders列表。 jQuery的方法是這樣的......
/* Get orders by the current logged in employee's department */
function getOrdersByDept(department, filter, dateFrom, dateTo) {
var dto = {};
dto['department'] = department;
dto['filter'] = filter;
dto['dateFrom'] = dateFrom;
dto['dateTo'] = dateTo;
$.ajax({
type: 'POST',
url: 'ProcessPO.aspx/GetOrdersByDept',
data: JSON.stringify(dto),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
displayOrders(data.d);
},
error: function (xhr, status, errorThrown) {
alert(xhr.responseText);
}
});
}
返回此JSON ...
從這...的WebMethod
[WebMethod]
public static List<Order> GetOrdersByDept(Department department, Filter filter, DateTime? dateFrom = null, DateTime? dateTo = null)
{
return OrderLists.GetOrdersByDepartment(department, filter, dateFrom, dateTo);
}
現在這裏是displayOrders代碼。 ..
/* Fill the orders table. */
function displayOrders(data) {
$('#gdvOrders tbody').empty();
for (var key in data) {
var altRow;
if (key % 2 == 0)
altRow = 'class="alt-row"';
else
altRow = '';
/* Convert JSON formatted date to readable short date format */
var orderDate = data[key].OrderDate.substr(6);
var currentTime = new Date(parseInt(orderDate));
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
orderDate = day + "/" + month + "/" + year;
var orderStatus;
switch (data[key].Status) {
case 0:
orderStatus = 'Pending';
break;
case 1:
orderStatus = 'Closed';
break;
}
$('#gdvOrders tbody').append($('<tr ' + altRow + '><td>' + data.d[key].OrderId + '</td>' +
'<td>' + orderDate + '</td>' +
'<td>' + data[key].EmployeeName + '</td>' +
'<td>' + data[key].Items + '</td>' +
'<td>$' + data[key].SubTotal.toFixed(2) + '</td>' +
'<td>$' + data[key].TaxTotal.toFixed(2) + '</td>' +
'<td>$' + data[key].GrandTotal.toFixed(2) + '</td>' +
'<td>' + orderStatus + '</td></tr>'));
}
$('#gdvOrders tbody td:nth-child(4)').hide();
$('#gdvOrders tbody td:nth-child(5)').hide();
$('#gdvOrders tbody td:nth-child(6)').hide();
}
每個訂單基本上都包含一個屬於List的Items。我將它存儲在表格的第4欄並隱藏它。當用戶點擊表格中的一行/訂單時,我想將每個項目的另一個列表加載到另一個表格中。對於剝離下來供你觀賞的訂單該行的點擊功能是這樣的....
$('#gdvOrders tbody tr').live('click', function() {
displayItems($(this).find('td:nth-child(4)').text());
});
現在displayItems函數定義爲這個...
function displayItems(data)
我已經嘗試了很多不同的如何通過數據進行迭代,當我...
alert(data)
我收到...
[object Object], [object Object]
當我嘗試迭代它時(嘗試了幾種不同的方式),我得到了未定義的字符,或者[當我嘗試數據[0]時,數據1將顯示o等等等等。基本上只是讓我回到[對象對象]的每個字符而不是數組中的對象。我究竟做錯了什麼?
你可以發佈一個你從Web服務中獲得的JSON的例子嗎? – jbabey