2009-08-13 3 views
1

Я пытаюсь проанализировать строки в таблице, которую я создаю с помощью Javascript, добавляя элементы в корзину, а затем создавая объект json, когда пользователь нажимает на сохранение порядка всех элементов и передает его на php скрипт с использованием $.post в jQuery.Создание объекта JSON

Единственная проблема, с которой я столкнулся, - это понимать объекты JSON и как нажимать на объект больше предметов. Я получаю сообщение об ошибке в firebug, который говорит мне, что devices[i] не определен. Не совсем уверен, как еще это сделать. Я думал, что это действительно массив.

function Save() 
    { 
    var devices = new Object(); 
    var i = 0; 

$("#device_tbl tr:gt(0)").each(function(){ 
    var manufid = $(this).find("td").eq(0).find(".manuf_id").html(); 
    var modelid = $(this).find("td").eq(1).find(".model_id").html(); 
    var condition = $(this).find("td").eq(2).find("select").val(); 
    var carrier = $(this).find("td").eq(3).find("select").val(); 
    var imei = $(this).find("td").eq(4).find("input").val(); 
    var price = $(this).find("td").eq(5).html(); 
    alert(manufid+"\n"+modelid+"\n"+carrier+"\n"+imei+"\n"+price); 

    devices[i].manufid = manufid; 
    devices[i].modelid = modelid; 
    devices[i].carrier = carrier; 
    devices[i].imei = imei; 
    devices[i].price = price; 

    i++; 

    }); 
document.write(devices);  //just for debugging 


$("#final").show(); 
} 

ответ

4

В настоящее время у вас есть устройства, объявленные как объекты, но вы рассматриваете его как массив.

Вам необходимо объявить его как массив объектов.

function Save() 
    { 
    var devices = new Array(); 
    var i = 0; 

$("#device_tbl tr:gt(0)").each(function(){ 
     var manufid = $(this).find("td").eq(0).find(".manuf_id").html(); 
     var modelid = $(this).find("td").eq(1).find(".model_id").html(); 
     var condition = $(this).find("td").eq(2).find("select").val(); 
     var carrier = $(this).find("td").eq(3).find("select").val(); 
     var imei = $(this).find("td").eq(4).find("input").val(); 
     var price = $(this).find("td").eq(5).html(); 
     alert(manufid+"\n"+modelid+"\n"+carrier+"\n"+imei+"\n"+price); 

     devices[i] = new Object(); 
     devices[i].manufid = manufid; 
     devices[i].modelid = modelid; 
     devices[i].carrier = carrier; 
     devices[i].imei = imei; 
     devices[i].price = price; 

     i++; 

     }); 
document.write(devices);   //just for debugging 


$("#final").show(); 
} 

или что-то в этом роде.

(Обновлено, чтобы показать это в вашем коде)

+0

«устройства [i] = новый объект();» часть критическая, объявление ее как массив необязательно – Mike

Смежные вопросы