TEL:400-8793-956
当前位置:程序、服务器

使用Ajax和JSON随机化$ .each循环

提问者: 近期获赞: 浏览人数: 发布时间:2021-03-12 09:43:18

 问:我有一个使用$ .ajax将其拉到我的站点的json文件。我正在尝试随机化数组中的对象...以随机顺序进行。这是我的json文件示例:

 
“ greenWasteItems” :[ { “ image” :“ /img/lawn-clippings.jpeg” ,“ text” :“草坪剪报” },{ “ image” :“ /img/leaves.jpeg” ,“ text” :“树叶和杂草” },{ “图像” :“ /img/tree-branches.jpeg” ,“文本” :“树枝/灌木” },{ “图像” :“ /img/wood-scraps.jpeg” ,“文字” :“木屑” } ] }      
 
我正在使用$ .ajax来获取以下数据,并且试图使响应得到的是随机的:
 
$ 。阿贾克斯({
类型:“GET” ,网址:“/json/greenwaste.json” ,超时:2000 ,成功:函数(响应){ //显示内容VAR arrayRandom =数学。楼(数学。随机()*响应。length ); var item = response [ arrayRandom ]; $ 。每个(             
 
                反应。greenWasteItems , 功能(我, 项目) { 
VAR greenW = $ ('<LI类= “可见”>' + '<IMG SRC =' +项目。图像+ '>' + '<P类= “文本”>' +项目。文本+ '</ p>' + '</ LI>' ); $ ('.items' )。追加(greenW ); greenW 。隐藏()。                                     
                    
                    1000 ); 
}); } });             
              
由于某种原因,这是行不通的。谁能帮我?
 
 
答:在那种情况下,我认为这可能与变量的范围以及尝试将$ item变量传递给$ .each循环中的函数(如果确实是您的目标)有关。尝试在循环之前,循环内和循环之后控制台记录您的item变量。我认为您会在循环之前看到一个随机响应,因为您使用随机索引设置了“ item”等于“ response”,这在理论上应该是可行的。然后,您将看到整个数组按顺序来自$ .each循环函数,因为您传入的是“ response.greenWasteItems”,它会以“ i”索引,而不是随机的。在函数中使用“ item”作为参数只会给人一种幻觉,即您正在传递变量“ item” 您实际上是在代码中对函数进行了编写,实际上它只是使用'item'作为'response.greenWasteItems [i]'的变量名。我希望这是有道理的,对您有所帮助。
上一篇: 我在最后一个任务上度过了艰难的时光……Ben有时会变得有些困难
下一篇: 怎么了 ?int obj不是可迭代的吗?