使用jQuery解析coldfusion序列化数组

时间:2017-09-29 20:45:42

标签: jquery coldfusion

我有一个coldfusion函数,它将以下字符串返回给jQuery函数。这可能不是最好的方法,但我现在仍坚持使用它。

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 个答案:

答案 0 :(得分:1)

您可以解析第9个数组位置:

^(?!.*(0|1|2|3|4|9|11|12|13|14|15|16|18|19|250)).*$ 

考虑缓存 str.split(" ^")

结果是:



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

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;
    }
});
&#13;
&#13;
&#13;