5

書籍の請求書を作成し、ajax 経由で送信することを目指しています。請求書の書籍の配列を json エンコードしようとしていますが、空の値を取得し続けます

 //create item list
    var order_items = [];
    $('#mi_books tbody tr.userbooks').each(function(index)
    {
        var bookisbn = $(this).find('td .mi_isbn').text();

        var bookdata = [];
        bookdata['isbn'] = bookisbn;
        bookdata['title'] = $(this).find('.mi_title').text();
        bookdata['qty'] = $(this).find('.mi_qty').text();
        bookdata['price'] = $(this).find('.mi_price').text();

        order_items.push(bookdata);

    });
    alert(JSON.stringify(order_items));
    alert(order_items.toString());
    console.log(order_items);

alert(JSON.stringify(order_items));
出力:[[]]

alert(order_items.toString());
出力: blank

console.log(order_items);
出力:

Array[1]
0: Array[0]
isbn: "9781401216672"
length: 0
price: "1007"
qty: "1"
title: "Batman: The Killing Joke"
__proto__: Array[0]
length: 1
__proto__: Array[0]

私の配列は作成されていますが、どういうわけかそれを json エンコードできないようですか? 私は何か間違ったことをしていますか?

4

3 に答える 3

4

ArrayそしてObject異なる獣です。あなたbookdataは配列ではなくオブジェクトなので、次のように作成する必要があります

var bookdata = {};

于 2013-07-10T14:16:12.300 に答える
0

あなたは試すことができます

var order_items = {};
$('#mi_books tbody tr.userbooks').each(function(index)
{
    var bookisbn = $(this).find('td .mi_isbn').text();

    var bookdata = {
      'isbn': bookisbn,
      'title': $(this).find('.mi_title').text(),
      'qty': $(this).find('.mi_qty').text(),
      'price': $(this).find('.mi_price').text()
    };
    order_items[index] = bookdata;
});
alert(JSON.stringify(order_items));

あなたの唯一の間違いは、オブジェクトを使用する代わりに連想配列を作成しようとしたことでした。

于 2013-07-10T14:32:47.613 に答える