私はこれで一日中立ち往生してしまいました。おそらく本当にシンプルなものかもしれませんが、ここに行きます。オブジェクトのJSON配列にアクセスできない、私を運転している
私は、注文のリストを取得するWebMethodを呼び出すjQuery.Ajaxメソッドを持っています。 jQueryの方法は、ここでは今、このWebMethod属性から
...
[WebMethod]
public static List<Order> GetOrdersByDept(Department department, Filter filter, DateTime? dateFrom = null, DateTime? dateTo = null)
{
return OrderLists.GetOrdersByDepartment(department, filter, dateFrom, dateTo);
}
...この...
/* 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で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();
}
各注文は、基本的にリストであるアイテムのプロパティを保持します。私はそれをテーブルの4桁目に保存して隠します。ユーザーがテーブルの行/注文をクリックすると、別のテーブルに各アイテムの別のリストをロードします。あなたの閲覧のためにストリップダウン受注の行のためのクリック機能がこれです....
$('#gdvOrders tbody tr').live('click', function() {
displayItems($(this).find('td:nth-child(4)').text());
});
今displayItems機能は、このように定義されています...
function displayItems(data)
私は別の多くを試してみました私が受け取るI ...
alert(data)
データを反復処理する方法...
[object Object], [object Object]
私はそれを試してみると(いくつかの異なる方法で試してみました)、私は定義されていません。[データ[0]を試してみると、データ1はoを表示します。基本的には、配列内のオブジェクトの代わりに[object Object]の各文字を返すだけです。私は間違って何をしていますか?
Webサービスから戻ってくるJSONの例を投稿できますか? – jbabey