2016-04-01 11 views
1

Parsen Ich habe ein Objekt:Objekteigenschaftsname ändert sich, wenn es an den Knoten js

{"description":"Κλείσε τις βάνες","closeValves":["13/21","12/31","13/12","12/32"]}

und wenn ich es sende js an den Knoten mit Ajax den Moment ist es der router.post bekommt hinein in diese

verwandelt

{"description":"Κλείσε τις βάνες","closeValves[]":["13/21","12/31","13/12","12/32"]} ..

Irgendwelche Ideen, warum das passiert? im Knoten Skript, wo ich die router.post ich bin erfordern diese

let express = require('express'); let router = express.Router();

-Update auf Kommentar: der Aufruf der Funktion:

formEvent(json,'events/entry',valvescallback); 

und die Funktion AJAX:

function formEvent(data,module,next,e){//the request function 
    e=e||false; 

    console.log("form:",data) 
    if(e){e.preventDefault();} 
    var url = './'+module; // the script where you handle the form input. 

    $.ajax({ 
     type: "POST", 
     url: url, 
     data: data, 
     dataType:'json', 
     success: function (data) { 
      next(data); 
     }, 
     error:function (data) { 
      next(data) 
     } 
    }); 
} 

Aktualisierung bei Kommentar 2:

Keine Daten stammen aus Postgress SQL in einem Texttyp Spalte wie diese

{"description":"Κλείσε τις βάνες","closeValves":["13/21","12/31","13/12","12/32"]}

und ich bin mit dieser es in json zu transformieren und analysieren es:

var json = jQuery.parseJSON(data.task); 
json.action = 'getValves'; 
json.test = json.closeValves;//test to see if it also changes name 

I kann sehen, dass es jede Eigenschaft transformiert, die ein Array wie dieses ist name:[1,2,3] --> name[]:[1,2,3]

die ungerade ist, dass, wenn ich console.log die Daten innerhalb der AJAX-Funktion bin die sind in der richtigen Form, aber innerhalb der Post, die sie ändern ..

+0

poste die AJAX-Funktion. – hownowbrowncow

+0

Ich habe ein Update .. – mrapsogos

+1

Sind die Daten von einem Formular? –

Antwort

0

Ich fand es !! ist die Antwort auf die Definition des body-parser npm Nutzung:

app.use(bodyParser.urlencoded({ extended: false}));

Sie brauchen nur die erweiterte Eigenschaft true und der Array-Name wird sich nicht ändern .. zu machen, so lautet die Antwort

app.use(bodyParser.urlencoded({ extended: true}));

Verwandte Themen