2017-04-18 1 views
0

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> &nbsp; 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> &nbsp; Publish'); 
       } 
      }) 
     }); 

So jemand kann mir helfen? Vielen Dank im Voraus

+0

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

+0

Ich habe dieses wahre "app.use (bodyParser.urlencoded ({erweitert: true}));" und ich benutze formidable Modul, um auf Postdaten zuzugreifen. – Ankit

+0

Ich habe noch nie verwendet gewaltig, so dass, wenn mein vorheriger Kommentar nicht es funktioniert, kann ich Ihnen nicht helfen. sry – FirstOne

Antwort

0

können Sie mit Zugang

post['test[0]'] 

Vielleicht könnten Sie mehr Code schreiben und wir konnten Ihnen helfen, besser.

Grüße!

Roth

+0

Ja, ich kann auf diese Weise zugreifen, aber warum bekomme ich Input-Array so. Stattdessen sollte ich Array als Objekt erhalten. – Ankit

+0

Beitrag einige mehr Code und ich werde versuchen, Ihnen zu helfen, – Roth

+0

ich AJAX-Code zum besseren Verständnis hinzugefügt. – Ankit