2012-02-06 53 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