Javascript Split (Bug?)

Javascript Split (Bug?)

本文关键字:Bug Split Javascript      更新时间:2023-09-26

我尝试在冒号处分割字符串并检查它是否成功。api.php返回一个JSON。

$.ajax({
    type: "POST",
    url: "api.php",
    data: { "somedata": "123"},
    success: function (data, status, xhr) {
        if (data.indexOf("text") != -1) {
            var meinjson = $.parseJSON(data);
            for (var key in meinjson) {
                if (meinjson.hasOwnProperty(key) && key=="text") {
                    text = meinjson[key];
                    text = text.replace(/'+/g, " ");
                    text = decodeURIComponent(text);
                    if (text.indexOf(":") !== -1) {
                        text = text.split(/:(.+)?/);
                        var text1 = text[0];
                        var text2 = text[1];
                    }
                    if (text2 == undefined || text1 == undefined || text1 == void 0 || text2 == void 0 || text1=="" || text2=="") {
                        alert("fail");
                    }
                }
            }
        }
    }
});

我无法解释为什么ie总是落在最后如果而不是firefox和chrome。数据的一个例子是:

{"command":"SENDTEXT","text":"Lorem+Ipsum","command":"SENDTEXT","text":"Lorem+Ipsum+dolor","specialcommand":"CONNECTACCEPT"}

您缺少一个}。如果在success函数的第一个if之后缩进,您将看到。

更新:

使用逗号分隔,但数据中的"text"值不包含逗号。当它说"text":"Lorem+Ipsum"时,实际值是"Lorem+Ipsum",它将不包括"text":

建议重构语句以利用错误检查。Undefined和void 0本质上是相同的。与空字符串一样,它们都是假值。

if (!text2 || !text1 )
{
    alert("fail");
}