2

メソッドを使用してJSON.stringify()、文字列の配列を PHP スクリプトに渡すことができる JSON オブジェクトに変換しようとすると、stringify()メソッドは意味のあるものを返すことができません。

これは、入力が通過する唯一のコードです。他のものによって改ざんされていません。

function submitItem() {
 try {
    var item = [];
    item.name = $('.itemText').val();
    item.type = $('.itemType').val();
    item.price = $('.itemPrice').val();
    item.color = $('.itemColor').val();
    item.desc = $('.itemDesc').val();
    item.image = $('.itemImage').val();
    item.giftType = $('.itemGiftType').val();
    item.avail = $('.itemAvail').val();
    item.giftable = $('.itemGiftable').val();
    item.ranking = $('.itemRanking').val();
    item.basicTrack = $('.itemBasic').val();
    item.vetTrack = $('.itemVet').val();
    item.month = $('.itemMonth').is(':checked');
    item.hidden = $('.itemHidden').is(':checked');
    item.id = $('.itemID').val();

     //Left in for confirmation purposes
    var join = [];
    join[0] = 'test';
    join[1] = 'tset';
    console.log( JSON.stringify( join ) );

    console.log(item);
    var JsonItem = JSON.stringify(item);
    console.log( JsonItem );
 } catch (err) {
    console.log(err.message);
 }
}

これにより、コンソールに次の出力が生成されます。

出力は、スクリプトの下部にある 3 つの console.log() 行に対応します。

ご覧のとおり、両方の JSON アイテムのログは[]、任意の種類の JSON 文字列ではなく、として返されます。

これが発生する可能性のある理由があれば、高く評価されます。

ありがとう。

4

2 に答える 2

8

「アイテム」を配列として初期化しています。{}プレーン オブジェクト ( )として初期化する必要があります。

var item = {};

JSON シリアライザーが実際の配列を認識すると、数値でインデックス付けされたプロパティに対してのみ動作します。

于 2013-08-19T20:21:21.187 に答える