527 messaggi dal 18 dicembre 2012
Ciao a tutti
vorrei salvare dei dati, prima di salvarli nel db, in un oggetto json.
Salvo i dati in un campo nascosto.
Inizialmente questo campo è vuoto e quindi la prima volta mi creo una stringa si questo tipo:
var json = '{\"ID\":\"1\",\"Tipo\":\"1\"}";
Poi devo salvare questo nel campo nascosto. Potrei semplicemente fare:
$('#hdItem').val($('#hdItem').val() + ',' + json);
Ma vorrei:
trasformare il contenuto del campo nascosto in un oggetto Json e aggiungere il nuovo oggetto creato con la stringa. Ho provato con push, ma non fa nulla:
descrizioni = JSON.parse('[' + $('#hdItem').val() + ']');
var jsonCode = jsonSchema(id, tipo);
descrizioni.push(new JSONObject(jsonCode));

Il passo successivo è modificare dei dati all'interno dell'oggetto:
descrizioni = JSON.parse('[' + $('#hdItem').val() + ']');
for (var i = 0; i < descrizioni.length; i++) {
if (descrizioni[i].ID == id) {
descrizioni[i].Tipo= tipo;
break;
}
}
Ma non va anche in questo caso.
Grazie
43 messaggi dal 30 gennaio 2016
Ciao Svipla,
(Spero di aver capito quello che vuoi fare)
perché stai mettendo tutto in un campo solo ? Cioè, non puoi creare un div o qualcosa del genere e invece di un campo ne generi n.
Una volta fatto ciò dovrebbe essere più semplice per te iterare su tutto il tag e farci quello che vuoi.
Ciao
527 messaggi dal 18 dicembre 2012
Ciao e grazie
L'utente inserisce i dati attraverso una modal.
Salvo i dati in formato json in un campo nascosto e poi passo i dati ad un datatable jquery.
In questo mo è facile gestire e visualizzare.
Cmq, il problema di sopra l'ho risolto utilizzando JSON.parse e push

Ora ho un problema nella cancellazione di un oggetto.
Se faccio così:
for (var i = 0; i < descrizioni.length; i++) {
if (descrizioni[i].ID == id) {
delete descrizioni[i];
break;
}
}

Sostituisce l'oggetto con null. Quindi avrò; [{...}, null, {...}]
Invece io voglio: [{...}, {...}]
43 messaggi dal 30 gennaio 2016
Ciao.
Si, capisco, hai provato anche con splice ?
Ps - Ti chiedo scusa ma io non condivido il tuo modo di lavorare! Il tuo codice non è leggibile.
527 messaggi dal 18 dicembre 2012
Perchè è non è leggibile? :-(
43 messaggi dal 30 gennaio 2016
Scusa, forse ho esagerato un po..
Cmq sia dovresti ottimizzarlo un pochino.
Ciao
527 messaggi dal 18 dicembre 2012
I consigli li accetto ben volontieri.
Consigli?
43 messaggi dal 30 gennaio 2016
Tieni presente che Json è soltanto un formato per scambio dati, quindi evita di manipolare i dati di questo formato.
descrizioni = JSON.parse('[' + $('#hdItem').val() + ']'); // perché stai concatenando ?
// perché lavori in json ?
var jsonCode = jsonSchema(id, tipo); 
descrizioni.push(new JSONObject(jsonCode));

Il passo successivo è modificare dei dati all'interno dell'oggetto:
descrizioni = JSON.parse('[' + $('#hdItem').val() + ']');

Usa javascript e converti l'array quando hai finito...

mettiamo che tu abbia un oggetto js del genere;
var myObj = {"id": "", "tipo": ""};

la tua function che accetta come parametri i valori che ti arrivano dal modal deve essere più o meno così;
//crea il tuo oggetto a prescindere
myObj .id = id;
myObj .tipo = tipo;
//controlla se il campo nascosto contiene valori
if ($("#hidden").val() != "") {
//contiene già uno o più oggetti, quindi lo converto in un array js
var collection = JSON.parse($("#hdItem").val());
//se devo modificare e/o rimuovere un oggetto devo iterare, quindi
for (var i = 0; i < collection.length; i++) {
            var obj = collection[i];
            
        }
}
else {
//Il campo nascosto è vuoto
//Instanzio un array
var newCollection = [];
newCollection.push(myObj);
$("#hdItem").val(JSON.stringify(newCollection));
}

Togliendo i commenti, questo metodo diventa qualcosa del genere;
function saveModalValues(id, tipo){
 if ($("#hdItem").val() != "") {
  var collection = JSON.parse($("#hdItem").val());
  for (var i = 0; i < collection.length; i++) {
            var obj = collection[i];
            //continua a fare quello che ti serve
      }
}
  else {
   var newCollection = [];
   newCollection.push(myObj);
   $("#hdItem").val(JSON.stringify(newCollection));
  }
}


Come ti sembra ?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.