2016-08-08 8 views
2

Ich habe ein Formular wie folgt.Multi-Array zu Javascript JSON und löschen/lesen Sie

<form id="inform-order"> 
    <input name="example[fname]" /> 
    <input name="example[lname]" /> 
    <input name="example[id]" /> 
</form> 

Ich möchte es von jquery lesen und dann in JSON konvertieren.

tat ich dies:

<script> 
    var datastring2 = $("form#inform-order").serializeArray(); 
    var datastringjson = JSON.stringify(datastring2); 
</script> 

Dies ist für ein Array.

Jetzt möchte ich Multi-Array zusammenführen und es in Json konvertieren. Also zuerst für jedes Array, konvertierte ich es zu Json dann fusionierte sie.

Ich tat dies:

merge_datastringjson = $.extend(datastringjson, new-datastringjson); 

Nun ist diese meine Frage.

1- Meine Schritte sind wahr?

2- Wie kann ich eine Array-Liste (JSON-Objekt) durch example[id] entfernen?

3- Wie kann merge_datastringjson gelesen werden?

HINWEIS: Ich konvertiere es in JSON, weil ich es auf lokalen Speicher speichern möchte.

Antwort

1

1- Meine Schritte sind wahr?

Sie brauchen nicht JSON.stringify vor merge, es nur auf fusionierte Objekt verwenden (Sie könnten concat() verwenden zu fusionieren):

merge_datastringjson = JSON.stringify(datastring.concat(new_datastring)); 

2- Wie kann ich ein Array (JSON-Objekt entfernen) Formliste mit Beispiel [ID]?

Sie könnten eine kleine Funktion definieren, dies zu tun:

function remove(json, object_name){ 
    var json = JSON.parse(json); 
    var index = -1; 

    $.each(json, function(idx, obj) { 
     if(obj.name===object_name) 
      index = idx; 
    }); 

    if(index!=-1) 
     json.splice(index,1); 

    return JSON.stringify(json); 
} 

3- wie merge_datastringjson lesen kann?

Sie könnten $.each() verwenden:

$.each(JSON.parse(merge_datastringjson), function(idx, obj) { 
    alert(obj.name); 
}); 

Hoffnung, das hilft.

var datastring = $("form#inform-order").serializeArray(); 
 
var new_datastring = $("form#inform-order2").serializeArray(); 
 

 
merge_datastringjson = JSON.stringify(datastring.concat(new_datastring)); 
 

 
console.log(merge_datastringjson); 
 
console.log(remove(merge_datastringjson, 'example[id]', 12)); 
 

 
function remove(json, object_name, value){ 
 
    var json = JSON.parse(json); 
 
    var index = -1; 
 

 
    $.each(json, function(idx, obj) { 
 
    if(obj.name===object_name && obj.value==value) 
 
     index = idx; 
 
    }); 
 

 
    if(index!=-1) 
 
    json.splice(index,1); 
 

 
    return JSON.stringify(json); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="inform-order"> 
 
    <input name="example[fname]" /> 
 
    <input name="example[lname]" /> 
 
    <input name="example[id]" value="12"/> 
 
</form> 
 

 
<form id="inform-order2"> 
 
    <input name="example2[test]" /> 
 
</form>

+0

Dank für Ihre große help.I versuchen, Ihren Code testen. es funktioniert gut, außer zum Entfernen. Ich meine, ich möchte entfernen, wenn (zum Beispiel Beispiel [ID] == 12) ... – elize

+0

Gern geschehen, froh, ich könnte helfen. Du solltest auch den Wert an die remove-Funktion übergeben ... überprüfe mein update. –