2017-09-29 16 views
0

我有一個coldfusion函數,它將以下字符串返回給一個jQuery函數。這可能不是最好的辦法,但現在我堅持下去。使用jQuery解析coldfusion序列化數組

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

ColdFusion的功能最近被更新爲從查詢生成結構的數組,其序列化,然後將其附加到返回字符串。通過jQuery函數接收的結果字符串現在如下:

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

直到我們添加了序列化陣列,我們簡單地解析這樣的字符串(簡化了此問題):

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; 

如何可以解析在字符串末尾的陣列,以便它類似於下面的(這基本上是僞代碼,並可能需要一個循環):

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') 
} 

回答

1

您可以分析日È第九陣列位置:

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

考慮緩存str.split( 「^」)

這樣做的結果是:

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

糟糕,yeah..done。並感謝您的答案。我接受它。 – user460114

+0

@ user460114不客氣。非常感謝 – gaetanoM