2016-11-14 3 views
-1

J'essaye d'analyser un corps qui vient à moi après un appel d'api en utilisant ajax angularJs. Après appel, la réponse est:Parse un corps JSON après multipart ajax Appel angulaire

--3531b7e68196e3144197f82db0864b7e391c8b0ad51c4176c28f8ac41b3c 
Content-Disposition: form-data; name="passport"; filename="passport.json" 
Content-Type: application/json 

{ 
    "name": "Nothing", 
    "dob_display": "10/11/1997", 
    "dob_accuracy": "FD", 
    "owner_firstname": "Nothing", 
    "owner_surname": "To Understand" 
} 
--3531b7e68196e3144197f82db0864b7e391c8b0ad51c4176c28f8ac41b3c--

Je n'ai pas trouvé un plugin pour obtenir le corps de cette demande. Ai-je besoin de faire un analyseur manuel ou je pourrais obtenir une autre solution. Quelqu'un peut-il m'aider?

+0

Ce qui est résultat attendu? – guest271314

+0

Voir ['FormData'] (https://xhr.spec.whatwg.org/#interface-formdata) – guest271314

+0

mon résultat attendu est le json { " nom ":" Nothing ", " dob_display ":" 10/11/1997 ", " dob_accuracy ":" FD ", " owner_firstname ":" Rien ", " owner_surname ":" Pour comprendre " } et ensuite avoir accès comme un objet en angulaire. – Vlad

Répondre

0

Vous pouvez utiliser String.prototype.slice() avec String.prototype.indexOf() à chaque paramètre pour obtenir des indices de "{", "}", JSON.parse().

let response = `--3531b7e68196e3144197f82db0864b7e391c8b0ad51c4176c28f8ac41b3c 
 
Content-Disposition: form-data; name="passport"; filename="passport.json" 
 
Content-Type: application/json 
 

 
{ 
 
    "name": "Nothing", 
 
    "dob_display": "10/11/1997", 
 
    "dob_accuracy": "FD", 
 
    "owner_firstname": "Nothing", 
 
    "owner_surname": "To Understand" 
 
} 
 
--3531b7e68196e3144197f82db0864b7e391c8b0ad51c4176c28f8ac41b3c--`; 
 

 
let json = JSON.parse(response.slice(response.indexOf("{") 
 
      , response.indexOf("}") + 1)); 
 

 
let {name} = json; 
 

 
console.log(json); 
 
console.log({name}); 
 
console.log(name);

+0

Tout a été corrigé avec un analyseur personnalisé. – Vlad

0

Ceci est ma solution pour analyser les données du formulaire qui vient après un appel API:

parser = function (data) { 
    // this will split --1491test9246asaery134214 
    // if you have multiple files in the response 
    var dataArray = data.split(/--\S*[0-9a-z]/g), response = {}; 
    underscore.each(dataArray, function (dataBlock) { 
    var rows = dataBlock.split('\n'), 
     header = rows.splice(0, 4).slice(1, 3), 
     body = rows.join(''); 

    if (header.length > 1) { 
     var patternGetName = /(".*?")/g, 
      name = patternGetName.exec(header[0])[0].replace(/(")/g, ''); 
     response[name] = body; 
    } 
    }); 
    return response; 
};