2012-03-09 90 views
0

我發送一個字符串從服務器到Firefox瀏覽器在下面的格式:的JavaScript/DOM,解析鍵/值字符串

"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標籤,或使用'字符串'。我寧願繼續使用上面的格式,所以請引導我使用'字符串'解決方案。謝謝!

+0

'reply'不是一個DOM元素,它是一個字符串。字符串沒有'getElementsByTagName'方法,該字符串甚至不包含HTML。 – 2012-03-09 17:47:37

+0

感謝您的信息。你能詳細說明我該怎麼做呢? (無論是創建'對象'和使用HTML標籤,或解析'字符串' - 後者有我的青睞) – Gil 2012-03-09 17:53:13

+0

關鍵:不是標籤名稱和答覆不是對象 – Amberlamps 2012-03-09 17:12:47

回答

2

您可以使用一個簡單的正則表達式來提取字符串中的信息:

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

+0

謝謝菲利克斯。我將在此基礎上工作。 – Gil 2012-03-09 18:06:03

+0

不要忘記接受對你最有幫助的答案;) – 2012-03-09 18:10:57

+0

已付款到期的付款=) – Gil 2012-03-10 11:49:48