2011-11-20 128 views
0

這是對先前文章的編輯。對於一個非常新手的問題。我有一個使用數據對象調用的javascript函數。數據似乎是一個JSON字符串。但是json字符串不會被解析。如何解析這個json字符串?那麼如何用json字符串中的值替換div的內容?處理javascript,對象和螢火蟲

我收到以下錯誤:

JSON.parse(data)與「意外字符」
eval('(' + data + ')');錯誤死亡「失蹤]之後元素列表」死亡。

---- JSON字符串--------

http://jsonlint.com/ calls this a valid json string. 
[{"cmd": "as", "id": "#calls", "val": "<h2> Missed Calls</h2><ul></ul>", "prop": "innerHTML"}] 

---- ---- HTML

<script type='text/javascript'> 
    function missed_calls_callback(data){ 
     alert("Foo"); // (breakpoint) This alerts 'Foo' 
     alert(data.id); // This prints 'undefined' 

     var object1 = JSON.parse(data); 
     var object2 = eval('(' + data + ')'); // missing [ 


     // How do I do the following? 
     // 1. divname = data.id 
     // 2. content = data.id.val 
     // 2. Replace contents of <div id="divname"> with content 
    } 
</script> 
<body> 
    And on my page I have div calls. 
    I want to fill div calls with 
    <div id="divname"> Put stuff here. </div> 
</body> 

回答

0

這是一個棘手的一個。我會回答這個問題,以及那些可能有同樣問題的人的利益。這個問題是一個json字符串中的隱形回車。 data包含JSON.parse無法處理的隱藏字符。我使用方法的組合來修復json字符串,以消除javascript庫無法處理的回車。

------服務器端-------

render = render_to_string('templates/file.html', { 'tag': objects }) 
dajax = Dajax() 
dajax.assign('tags','innerHTML', render) 
jsonStr = dajax.json() 
jsonStr = ''.join(unicode(jsonStr, 'utf-8').splitlines()) 
return jsonStr 

-------客戶端-----

function my_callback(data){ 
    var dString = JSON.stringify(data); 
    var myObject = JSON.parse(dString); 
    document.getElementById(myObject[0].id).innerHTML=myObject[0].val; 
} 
0

你是什麼意思 「測試」 與螢火蟲?

<body> 
    And on my page I have div calls. 
    I want to fill div calls with 
    <div id="divname"> Put stuff here. </div> 
</body> 
<script type="text/javascript"> 
    data = { 
     cmd:"as", 
     id:"divname", 
     val:"<h2> My Content</h2>" 
    }; 
    console.log(data); 
    document.getElementById(data.id).innerHTML=data.val; 
</script> 

jsFiddle

+0

我只是想了解一些螢火蟲。它說data.id是未定義的。 ?? – codingJoe

+0

你在哪裏定義頁面上的「數據」?在我的例子中,你可以看到它被聲明爲對象字面量。 – Sinetheta