问:我有一个使用$ .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]'的变量名。我希望这是有道理的,对您有所帮助。