2017-09-29 2 views
0

J'ai une fonction coldfusion qui renvoie la chaîne suivante à une fonction jQuery. Ce n'est peut-être pas la meilleure façon de le faire, mais je suis coincé avec ça pour le moment.Parse coldfusion série sérialisée utilisant jQuery

var str = '1^Successfully logged in^0^1^1^5^NULL^xyz^100'; 

La fonction a été coldfusion récemment mis à jour pour générer un tableau de struct d'une requête, la sérialisation, puis l'ajouter à la chaîne de retour. La chaîne résultante reçue par la fonction jQuery est maintenant comme suit:

var str = '1^Successfully logged in^0^1^1^5^NULL^xyz^100^[[4,"No credit card"],[5,"Test"]]' 

Jusqu'à nous avons ajouté le tableau sérialisé, nous avons été l'analyse syntaxique simplement la chaîne comme celui-ci (simplifiée pour cette question):

var a = str.split("^")[0]; 
var b = str.split("^")[1]; 
var c = str.split("^")[2]; 
var d = str.split("^")[3] || -1; 
var e = str.split("^")[4] || -1; 
var f = str.split("^")[5] || -1; 
var g = str.split("^")[6] || 0; 
var h = str.split("^")[7] || 0; 
var i = str.split("^")[8] || 0; 

Comment puis-je analyser le tableau à la fin de la chaîne de sorte qu'elle fait quelque chose comme ce qui suit (ce qui est essentiellement et les besoins pseudocode probablement une boucle):

var errors = str.split("^")[9]; 
if(we find an error of "4"){ 
    $('#divAlert').html('No credit card') 
} 
if(we find an error of "5"){ 
    $('#divAlert2').html('Test') 
} 

Répondre

1

Vous pouvez analyser th e 9ème position du tableau:

var f = JSON.parse(str.split("^")[9] || '[]'); 

Tenir compte pour mettre en cache la str.split ("^").

Le résultat de ceci est:

var str = '1^Successfully logged in^0^1^1^5^NULL^xyz^100^[[4,"No credit card"],[5,"Test"]]' 
 

 
var tmpArr = str.split("^"); 
 
var a = tmpArr[0]; 
 
var b = tmpArr[1]; 
 
var c = tmpArr[2]; 
 
var d = tmpArr[3] || -1; 
 
var e = tmpArr[4] || -1; 
 
var f = tmpArr[5] || -1; 
 
var g = tmpArr[6] || 0; 
 
var h = tmpArr[7] || 0; 
 
var i = tmpArr[8] || 0; 
 
var f = JSON.parse(tmpArr[9] || '[]'); 
 
console.log(f); 
 
f.forEach(function(ele, idx) { 
 
    switch (ele[0]) { 
 
     case 4: 
 
      $('#divAlert').html((idx, e) => {return e + ele[1] + '<br/>'}); 
 
      break; 
 
     case 5: 
 
      $('#divAlert').html((idx, e) => {return e + ele[1] + '<br/>'}); 
 
      break; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<div id="divAlert"></div>

+1

oups, yeah..done. Et merci pour la réponse. Je l'accepte. – user460114

+0

@ user460114 De rien. Merci beaucoup – gaetanoM