2012-02-06 50 views
1

我有一堆交互活動,它們是通過讀取XML文件中的所有參數而寫入的。我們正在擺脫FLASH,所以我正在編寫一個腳本,它將讀取我需要的XML元素,並動態地構建一個包含所有元素及其屬性的JavaScript對象。最後,我通過JSON.stringify()傳遞對象並傳回JSON版本。卡住動態構建javascript對象

我正在閱讀XML中使用ajax調用與JQUERY然後JS和JQUERY的混合。我喜歡jQuery的DOM選擇器。

我正在學習所有這些東西,因爲我一直沿着這裏走,我不是貿易開發商,所以當我到達需要處理一堆元素的時候,我碰到了一堵牆.each( )。儘管我不確定,但我仍在猜測它的語法。一切都很好,直到需要添加XML中的「面板」爲止...... 我必須處理每個面板。

$.ajax({ 
    type: "GET", 
    url: "activity.xml", 
    dataType: "xml", 
    success: function(xml) { 
     var activity = { 
      title : { 
       text: $(xml).find('title').text(), 
       xpos: $(xml).find('title').attr('xpos'), 
       ypos: $(xml).find('title').attr('ypos') 
      }, 
     rubric : { 
       text: $(xml).find('rubric').text(), 
       xpos: $(xml).find('rubric').attr('xpos'), 
       ypos: $(xml).find('rubric').attr('ypos') 
      }, 
     panels: { 
       $(xml).find('panel').each(function() { 
        panel :{width: $(this).attr('width'), 
        height: $(this).attr('height'), 
        xpos: $(this).attr('xpos'), 
        ypos: $(this).attr('ypos') 
      }});// end .each() 
     }// end panels object 
    });//end ajax.get(xml) 

    var activity_json = JSON.stringify(activity); 

林肯定它沒有這樣做,但我不知道它應該如何。提前

感謝

+0

在JSfiddle上放置這個簡化版本 - 很難在沒有看到原始數據的情況下發現問題。 過去我遇到的一件事是,你必須確保XML是有效的 - 一些閃存例程比web瀏覽器更寬容。你檢查過所有的activity.xml是否正確驗證? – pp19dd 2012-02-06 16:12:21

回答

0

你的問題一定是在這裏

panels: { 
      $(xml).find('panel').each(function() { 
       panel :{width: $(this).attr('width'), 
       height: $(this).attr('height'), 
       xpos: $(this).attr('xpos'), 
       ypos: $(this).attr('ypos') 
     }});// end .each() 

重寫代碼如下:

編輯

,你會崩潰的語法對象文字。您應該初始化一個數組並完成對象聲明。然後遍歷您的集合並使用適當的值填充對象的panels屬性。

編輯

呀。我明白你的意思。

Here是迭代你的DOM元素的小提琴。我使用了原生的JavaScript API。我不是很熟悉jQuery2XML。

+0

謝謝!是的,它絕對在那裏(面板部分),因爲當我評論它的工作正常。我已經嘗試過你的解決方案後,它有一段時間,有一個小錯誤。只需將activity.panels.push(data)移動到數據對象的右括號之後(在第二個之後)而不是第一個)。所以這看起來不錯,除了現在我不知道如何訪問每個屬性。 panels.panel [x] .width不適合我。 – Nuevallorker 2012-02-06 16:37:31

+0

@Nuevallorker我已經更新了答案。我只用了indeces而不是名字。但是有一點挖掘,你會發現如何通過他們的名字來引用屬性。乾杯。 – Oybek 2012-02-06 17:41:07

+0

這會讓我順利地走上去。非常感謝! – Nuevallorker 2012-02-07 09:37:10