Javascript/DOM,解析键/值字符串

标签 javascript ajax dom

我按照以下格式从服务器向 Firefox 浏览器发送一个字符串:

"KEY:a1 VAL:123.45"

这个字符串可以包含很多这样的记录。

这是我编写的代码:

    var e;
    var reply = request.responseText;
    var txt = "", tab, key = "", val = "";
    var x = reply.getElementsByTagName("KEY:");
    for(i = 0; i < x.length; i++)
    {
        txt = x[i].childNodes[0].nodeValue; // "KEY:%c%c VAL:%.2F"
        tab = txt.split(":");
        key = "table_" + tab[1].substring(0,1);
        val = tab[2];
        e = document.getElementById(key);
        e.innerHTML = val;
        e.style.display = "block";
    }

val 显示 "KEY:a1 VAL:123.45" 而不是预期的 "123.45" (当然还有 key 变量也是错误的,不匹配表格单元格,只是选择表格中的第一个单元格)。

我什至不知道如何显示 keyval 值(document.write() 和alert() 不执行任何操作,我也不知道如何显示在 Firefox 中跟踪此代码)。

欢迎任何想法、提示、更正或代码示例,但请不要推荐使用任何库,我想用很少的代码来完成它。

编辑:从两条评论中,我了解到有两种不同的方法可以继续:要么使用 DOM 对象和 HTML 标签,要么使用“字符串”。我更愿意继续使用上面的格式,所以请指导我使用“字符串”解决方案。谢谢!

最佳答案

您可以使用简单的正则表达式从字符串中提取信息:

var value = "KEY:a1 VAL:123.45"​,
    pattern = /KEY:(\S+) VAL:(.+)$/g;

var result = pattern.exec(value);
// result[1] == 'a1'
// result[2] == '123.45'

就您而言,您可以使用 request.responseText 而不是 value

关于Javascript/DOM,解析键/值字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9638086/

相关文章:

javascript - jQuery 替换许多类中的字符串

Javascript对象值相等测试?

Symfony 1.4 中的 Ajax 分页

jQuery:发出json请求,在回调中处理它,在回调函数之外访问它?

php - 如何判断某人是否离开

javascript - jQuery show() 不是函数 - 用于添加 DOM 元素

javascript - 带有表单验证的 ng-show formname.inputname.$error 失败

javascript - 未捕获类型错误 : Cannot set property '0' of undefined error

javascript - iOS 上的 Cordova `pause` 事件

javascript - 检测 iframe 何时关闭