2013-04-25 55 views
0

XML响应:我的循环怎么了?

<NewDataSet xmlns=""> 
<Table diffgr:id="Table1" msdata:rowOrder="0"> 
    <Code>106377</Code> 
    <Name>Blackened red snapper</Name> 
    <Category>123</Category> 
    <Yield>4</Yield> 
    <YieldUnit/> 
</Table> 
<Table diffgr:id="Table2" msdata:rowOrder="1"> 
    <Code>303570</Code> 
    <Name>Celery soup</Name> 
    <Category>123</Category> 
    <Yield>1</Yield> 
    <YieldUnit/> 
</Table> 
<Table diffgr:id="Table3" msdata:rowOrder="2"> 
    <Code>303675</Code> 
    <Name>Challah French Toast</Name> 
    <Category>123</Category> 
    <Yield>6</Yield> 
    <YieldUnit/> 
</Table> 
<Table diffgr:id="Table4" msdata:rowOrder="3"> 
    <Code>303681</Code> 
    <Name>Challah french toast</Name> 
    <Category>123</Category> 
    <Yield>4</Yield> 
    <YieldUnit/> 
</NewDataSet> 

HTML代码

<div data-role="output"> 
    <ul id="RecipeList" data-role="listview" data-split-icon="star" data-split-theme="e" data-inset="true"> 
    </ul> 
</div> 

JS代码

var CodeObj = new Array(); 
var NameObj = new Array(); 
var Codeindex = 0; 
var Nameindex = 0; 

$(req.responseText).find('Name').each(function() { 
    NameObj[Nameindex] = $(this).text(); 
    Nameindex += 0; 

    for (var i = 0; i < NameObj.length; i++) { 
     $(this).append(NameObj[i] + "<br/>"); 

     $(req.responseText).find('Code').each(function() { 
      CodeObj[Codeindex] = $(this).text(); 
      Codeindex += 0; 
      for (var a = 0; a < CodeObj.length; a++) { 
       $(this).append(CodeObj[a] + "<br/>"); 
      } 
     }); 

     var $content = $('<li><a href="#"><img src="../../img/album-bb.jpg"><h3>Name: ' + NameObj[i] + '</h3><p>Code: ' + CodeObj[a] + '</p></a><a href="#purchase" data-rel="popup" data-position-to="window" data-transition="pop">Add to favorites</a></li>'); 
     $('#RecipeList').append($content).listview('refresh'); 
    } 
}); 

列表视图输出

Name : Blackened red snapper 
Code : 106377 
Name : Celery soup 
Code : 106377 
Name : Challah french toast 
Code : 106377 
Name : Challah french toastr 
Code : 106377 

问题:总是相同的代码。任何人都可以知道我的循环有什么问题吗?谢谢。我尝试了很多方法。但仍然可以得到正确的输出名称

+0

你能'的console.log()'这些:'$(req.responseText).find( '名称')'和'$(req.responseText).find('Name')。长度' – 2013-04-25 02:20:56

+0

我得到所有的名字..当我看到日志,但由于代码是问题。我将其更改为代码。并获得所有的代码。 – 2013-04-25 03:02:00

+0

您的xml缺少'diffgr'和'msdata'的名称空间定义 – 2013-04-25 04:00:06

回答

0

似乎

Nameindex + = 0; Codeindex + = 0;

是错的。不应该是Nameindex + = 1?

+0

等等。生病try..please等待谢谢你:) – 2013-04-25 02:26:21

+0

对不起家伙。代码现在是美国代码,但现在名称不同。 withour changng my codes .. – 2013-04-25 02:47:55

0

Nameindex += 0Codeindex += 0是无操作,所以它们可能与它有关。

相反,试试这个:

$(req.responseText).find("Table").each(function() { 
    var item = $(this), 
     name = item.find("Name").text(), 
     code = item.find("Code").text(); 
    $("#RecipeList").append('<li><a href="#"><img src="...." />' 
     +'<h3>'+name+'</h3>Code: '+code+'</a>.....'); 
}); 
+0

等一下。虐待try..please等待谢谢:) – 2013-04-25 02:25:46

+0

输出每个列表是 – 2013-04-25 02:30:10

+0

名称:[object Object]代码:[object Object] – 2013-04-25 02:30:34

1

问题是与增量。替换:

Nameindex +=0; 
Codeindex +=0; 

随着

Nameindex++; 
Codeindex++; 

Nameindex +=1; 
Codeindex +=1; 
+1

等一下。生病try..please等待谢谢:) – 2013-04-25 02:24:57

+0

什么都没有发生先生 – 2013-04-25 02:38:54

+0

对不起家伙。代码现在是美国代码,但现在名称不同。随着我的代码长昌 – 2013-04-25 02:46:37