2016-08-08 2 views
-1

Dies ist ein ziemlich spezifisches Problem und ich kann es nicht online finden oder ich konnte bis jetzt keine Lösung finden.Wie JSON (statt serialisieren) ein Formular, das Name = "Item [] [Dinge]" ohne ein Objekt mit null Kinder erhalten?

Ich habe ein Formular, das Eingänge enthält, die haben: name = "Item[][things]" wie in einem Element. Daran kann ich nichts ändern. Ich möchte das in ein JSON verwandeln, um es an den Server zu senden. Ich kann Serialize nicht verwenden, ich muss es wirklich zu einem JSON machen.

Dies funktioniert nicht mit dem, was ich versuchte: JSON.stringify($myForm.serializeObject()). Da mein Formular name = "Item [] [differentOtherThings]" enthält, erhalte ich ein Array von Nullen [null, null, ..., null]

Ich habe eine serializeObject() benutzerdefinierte Methode jquery-serialize-object zu meinem Projekt hinzugefügt.

Irgendwelche Ideen, wie ich JSON die Form ohne das Nullproblem könnte?

+0

Wollen Sie damit sagen, dass Sie die Zeichenfolge ' "Item [] [Dinge]"' vor JSON Serialisierung ausgewertet werden soll? Das ist nicht klar. Bitte geben Sie ein vollständiges Beispiel an. – Arnauld

Antwort

1

finden Sie in der unten Snippet

$(function(){ 
 
    $("#serialize").click(function(){ 
 
    var $myForm = $("form").eq(0); 
 
    var str = JSON.stringify($myForm.serializeObject()); 
 
    console.log(str); 
 
    var object = JSON.parse(str); 
 
    console.log(object); 
 
    }) 
 
}); 
 

 
$.fn.serializeObject = function() 
 
{ 
 
    var o = {}; 
 
    var a = this.serializeArray(); 
 
    $.each(a, function() { 
 
     if (o[this.name] !== undefined) { 
 
      if (!o[this.name].push) { 
 
       o[this.name] = [o[this.name]]; 
 
      } 
 
      o[this.name].push(this.value || ''); 
 
     } else { 
 
      o[this.name] = this.value || ''; 
 
     } 
 
    }); 
 
    return o; 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<form> 
 
    <p><input type="text" name = "Item[][things]"></p> 
 
    <p><input type="text" name = "Item[][things1]"></p> 
 
    <p><input type="text" name = "Item[][differentOtherThings]"></p> 
 

 
</form> 
 

 
    <button id="serialize">serialize</button>

+0

Aw danke Mann. Es kam mir nicht in den Sinn, dass ich nach einer anderen serializeObject-Methode suchen könnte, die das richtig macht. –

Verwandte Themen