I eine Form mit einem gewissen Eingabefeld hat, und hat auch ein Array Eingabefeld:Eingangsarray Feld Hochkommata Hinzufügen wenn Konsolenprotokoll in Express.js (node js)
<input type="hidden" id="user_id" name="user_id" value="1" />
<input type="text" name="test[0][name]" value="car" />
<input type="text" name="test[1][value]" value="100" />
ich diese Form über ajax bin Entsendung. Jetzt, wenn ich trage Protokolldaten in Express js. Ich bin immer wie unten:
{
user_id : '1',
'test[0]' : 'a',
'test[1]' : 'b',
}
So Themen sind:
1) Warum erhalte ich Eingangs-Array wie diese? Stattdessen sollte ich Array als Objekt in Express js bekommen.
2) Ich bin in der Lage User_id zugreifen post.user_id
verwenden, aber nicht Test-Array zugreifen.
Ich versuche Test Array zuzugreifen unter Verwendung von post.test
und post.test.name
aber nicht definiert immer bekommen.
Mein Ajax-Code ist:
$("#frmSave").on('submit', function(e) {
e.preventDefault();
var el = $("#btnPublish");
var formData = new FormData();
formData.append("image",$("#image").get(0).files[0]);
var other_data = $("#frmSave").serializeArray();
$.each(other_data, function(key, input) {
formData.append(input.name, input.value);
})
$.ajax({
url : "{{ admin_url }}offer/add",
type : "POST",
data : formData,
dataType : "json",
contentType : false,
processData : false,
beforeSend : function() {
el.html('<img src="{{ admin_url }}images/loaders/loader5.gif" width="15"> Wait...');
},
success : function(json) {
if(json.errors) {
var errors_string = '';
$.each(json.errors, function(index,value) {
errors_string += value + '<br />';
});
if(errors_string != '') {
$.gritter.add({
title: 'Required Field',
text: errors_string,
class_name: 'growl-danger',
sticky: false,
time: '2000'
});
}
} else if(json.error_msg) {
$.gritter.add({
title: 'Error!',
text: json.error_msg,
class_name: 'growl-danger',
sticky: false,
time: '2000'
});
} else if(json.success_msg) {
$.gritter.add({
title: 'Success',
text: json.success_msg,
class_name: 'growl-success',
sticky: false,
time: '2000'
});
}
el.html('<i class="fa fa-globe"></i> Publish');
},
error(xhr, ajaxOptions, thrownError) {
$.gritter.add({
title: 'Something went wrong',
text: xhr.status + ':' + thrownError,
class_name: 'growl-warning',
sticky: false,
time: '2000'
});
el.html('<i class="fa fa-globe"></i> Publish');
}
})
});
So jemand kann mir helfen? Vielen Dank im Voraus
Verwenden Sie [dies] (https://github.com/expressjs/body-parser)? Wenn ja, prüfen Sie, ob Sie [erweitert] (https://github.com/expressjs/body-parser#extended) als 'true' in den' urlencoded' Optionen. – FirstOne
Ich habe dieses wahre "app.use (bodyParser.urlencoded ({erweitert: true}));" und ich benutze formidable Modul, um auf Postdaten zuzugreifen. – Ankit
Ich habe noch nie verwendet gewaltig, so dass, wenn mein vorheriger Kommentar nicht es funktioniert, kann ich Ihnen nicht helfen. sry – FirstOne